如何从通过复选框选择的数组中对项目进行排序?

我想要使​​用复选框对先前选中的项目进行排序。 如果我通过单击复选框选择电影的评级,则会返回适用的电影。

URL的结尾如下所示:

?ratings[PG-13]=1&ratings[G]=1 

如果我点击订购电影的链接,它将获取整个电影列表,而不是我刚刚定位的电影列表。 那么,我怎样才能“追加” "sort=title"到url中的评分?

我觉得这是我在视图中可以做的事情。 我的link_to是这样的:

 %th#title_header{:class=>("hilite" if @sort == "title")}= link_to "Movie Title", :sort => "title" 

我的check_box_tag是这样的:

 = check_box_tag "ratings[#{rating}]",rating,@all.include?(rating) 

在我的控制器中,我有这个:

 def index @movies = Movie.order(params[:sort]) @movies = @movies.where(:rating => params[:ratings].keys) if params[:ratings].present? @sort = params[:sort] @all = (params[:ratings].present? ? params[:ratings] : []) end 

(我知道,我的“where”查询容易受到SQL注入的攻击,这是暂时的,我只是想把整个事情概念化。)

你需要在link_to的末尾传递一个额外的哈希,它链接url中的查询:

 link_to "Movie Title", movies_path(:sort => "title", :ratings => params[:ratings]) 

辉煌!