0

以前にチェックボックスで選択したアイテムを並べ替えたい。チェックボックスをクリックして映画の評価を選択すると、該当する映画が返されます。

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インジェクションに対して脆弱であり、一時的なものであり、全体を概念化しようとしているだけです。)

4

1 に答える 1

0

link_toの最後に追加のハッシュを渡す必要があります。これにより、URL内のクエリがチェーンされます。

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

素晴らしい!

于 2012-06-13T01:00:18.337 に答える