我有一个rails应用程序。主页搜索电影数据库,并在搜索查询的结果页面中显示结果。
现在,在结果页面中有一个电影列表(比如5个),并且结果页面在左侧栏中显示电影的属性。
例如,
=================Movies结果page================
左边栏
流派
喜剧(Link_to)恐怖(Link_to)
语言
英语(Link_to)德语(Link_to)
结果集
1愤怒管理2美国派3邪恶死亡4记恨5 Du riescht so gut
=====================================================
现在,在第一次搜索之后,我的搜索控制器有一个@movieid数组,其中包含5个movieid(如上所述)。左边的栏有过滤器,可以进一步过滤。我使用@movieid数组列出了结果集中的电影。
如果我点击"comedy“链接,我希望结果页面只显示"1.愤怒管理”和"2.美国派“。
如果我点击“德语”链接。它应该只显示“5.du riescht so gut”。就是这样。
现在,我对以下选项感到困惑: 1.我在考虑通过link_to传递genre_id和@movieid数组作为参数。2.使用cookie:store保存@movieid数组3.将@movieid保存到数据库中并检索。
我不知道怎么处理这件事。记住,我的@movieid数组也可以包含100000个ids。
在最佳实践和性能方面帮助我。
谢谢!
编辑:
我可以使用Mysql视图来存储结果集吗?问题是,如果100000个用户同时进行搜索,会创建许多视图,这会发生什么情况?什么是好的实践?
发布于 2012-03-08 03:25:56
我认为,我做得很好!
回答我的问题:
我从Ryan那里听说持久化用户搜索是一个很好的实践。我对此也很感兴趣。现在我想我已经实现了它。请用我的方法中的所有缺点来打击我,我正试图在这里经营一家公司。
谢谢!
编辑:
忘记了我对阿志高的感谢。当然,我已经添加了will_paginate gem。它工作正常。
提示:在will_paginate中,如果您使用:per_page => 10列出83部电影,那么您将无法在9页的第一页(10+10+....+3)中显示电影的总数。如果你想像电影(83)那样做的话。然后,@movies.total_entries.to_s帮了大忙。
也要感谢你!
发布于 2012-03-07 00:59:58
因为你可以有100000个不同的电影,你需要在你的rails应用中实现分页。有了will_paginate gem,这就变得很容易了。下面是一个例子:
# movies_controller.rb
def index
@movies = Movie.search(params[:q]).order('name').paginate(:page => params[:page], :per_page => 15)
respond_to do |format|
format.html
end
end然后在您的视图中:
# index.html.erb
<%= form_tag movies_path, :method => 'get' do %>
<div>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "Search", :name => nil %>
</div>
<% end %>
<table>
<tr>
<th>Movies</th>
</tr>
<% @movies.each do |movie| %>
<tr>
<td><%= link_to movie.name, movie %></td>
</tr>
<% end %>
</table>
<%= will_paginate @movies %>搜索和过滤肯定是一个棘手的问题。这真的很难详细解释如此复杂的事情,所以我将简单地指出令人难以置信的Railscast,它解释了如何做你想做的事情。
http://railscasts.com/episodes/240-search-sort-paginate-with-ajax
https://stackoverflow.com/questions/9587186
复制相似问题