【问题标题】:How would I sort items from an array that have been chosen through checkboxes?如何对通过复选框选择的数组中的项目进行排序?
【发布时间】:2012-06-11 17:38:32
【问题描述】:

我想对之前用复选框选中的项目进行排序。如果我通过单击复选框来选择电影评分,它会返回适用的电影。

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 注入的影响,这是暂时的,我只是想将整个事情概念化。)

【问题讨论】:

  • 你试过一步步调试“索引”吗?你应该看看发生了什么。顺便说一句,where 中没有可能的 SQL 注入。

标签: ruby-on-rails ruby


【解决方案1】:

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

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

太棒了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2019-05-20
    • 2017-02-26
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多