私の見解では、作成する必要がある2つのURLがあります。それぞれにはソートのための別の値がありますが、以前のすべてのレーティング設定を含める必要があります。このURLを作成するためにparams hashから2つの異なるURLを構築すると、1が他方を上書きします
は、コントローラ上で、最後のステップとして、私はparamsハッシュでマック:
params.delete :controller
params.delete :action
params.delete :commit
params.delete :utf8
params[:ratings] = @ratings
@titleparams = params
@dateparams = params
@dateparams[:sort] = "release_date"
@titleparams[:sort] = "title"
は私が@titleparamsと@dateparamsはのparamsの独立したコピーであることを期待しています。次に、それぞれに並べ替えパラメータを追加します。
%a#release_date_header= link_to "Release Date", movies_path(@dateparams)
%a#title_header= link_to "Movie Title", movies_path(@titleparams)
は私も@dateparamsと@titleparamsのように表示するページを来ているものを見るために、ページ上部のセクションがあります。
ビューには、同じコードではなくとして異なるTHsとでそれらを表示します。彼らは同じで、理由を理解できません。
%hr
[email protected]
%hr
[email protected]s
%hr
表示
{"ratings"=>{"G"=>"1", "PG"=>"1"}, "sort"=>"title"}
{"ratings"=>{"G"=>"1", "PG"=>"1"}, "sort"=>"title"}
(この記事のために時間を無視して)として、追加される最後のソートがキーパーであるようです。すなわち、タイトルはコントローラーのアクションのコードに最後に追加されたソートなので、2つの異なるパラメーターリストの最後のものです。
2つの異なる変数にコピーされるparamsが、値渡しではなく参照渡しのように動作する理由を理解できません。私はRubyを初めて使っていますが、以前はRubyの仕事でこれを見ていませんでした。
はありがとうを。これは多くの助けとなりました。 – DFBerry