我有一个rails应用程序。主页搜索电影数据库,并在搜索查询的结果页面中显示结果。
现在,在结果页面中有一个电影列表(比如5),结果页面显示左侧栏中电影的属性。
例如,
=================电影结果页面================
喜剧(的link_to) 恐怖(的link_to)
英(的link_to) 德国(的link_to)
1愤怒管理 2美国馅饼 3邪恶死了 4怨恨 5 Du riescht如此直觉
=============================================== ==
现在,在第一次搜索之后,我的搜索控制器有一个@movieid数组,其中有5个movieids(如上所述)。并且左侧栏有过滤器可以进一步过滤。 使用@movieid数组我在结果集中列出了电影。
如果我点击“喜剧”链接,我希望结果页面只显示“1.愤怒管理”和“2.美国派”。
如果我点击“德语”链接。它应该只显示“5. Du riescht so gut”。多数民众赞成。
现在, 我混淆了以下选项, 我想通过link_to作为参数传递genre_id和@movieid数组。 2.使用cookie [:store]保存@movieid数组 3.将@movieids存储在数据库中并检索。
我不知道如何处理这个问题。请记住,我的@movieid数组也可以包含100000个ID。
帮助我了解最佳做法和表现。
谢谢!
编辑:
我可以使用Mysql Views来存储结果集吗?问题是如果100000用户同时搜索,会创建多少视图会发生什么?,这样可以吗?什么是好的做法?
答案 0 :(得分:1)
我想,我做得很棒!
回答我的问题:
从第一个主搜索页面,如果我在电影表上运行搜索查询,并从表中的5000部电影获得300条记录,那么我将从rails方法动态创建mysql数据库中的视图, AR :: Base.connection.execute(),用于保存300部搜索电影的movie_ids。
现在继续,在第二页中,如果用户根据语言或流派过滤300个结果,我缩小搜索范围,对创建的视图进行搜索,而不是再次搜索MOVIES表。这是通过在将URL传递给link_to帮助程序后从url获取language_id和genre_id来完成的。
我从每个浏览器中获取一个session_id,并在该id前面附加一个字母,该字母将用作我的视图名称。
如果用户访问主页或通过搜索页面找到确切的产品,我会放弃我的视图,我会暂停我的视图说1小时,每天我会放弃前一天创建的观点。
我从Ryan那里得知,坚持用户搜索是一种很好的做法。我也对此感兴趣。现在我想我已经实现了它。请用我的方法中的所有负面信息打我,我试图在这里经营一家公司。
谢谢!
编辑:
忘了我对Ashitaka的感激之情。 当然我添加了will_paginate gem。它工作正常。
提示:在will_paginate中,如果您要列出83部电影:per_page => 10,那么你将无法在9页的第一页(10 + 10 + .... + 3)中显示电影总数。如果你想像电影一样(83)。然后,@ movies.total_entries.to_s帮忙。
也谢谢你!
答案 1 :(得分:0)
由于您可以拥有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