このルートがある場合 (routes.rb 内):
match 'posts', :to => 'posts#index'
次のルートが表示され、一致します。
# Case 1: non nested hash params
posts_path(:search => 'the', :category => 'old-school')
#=> "/posts?search=the&category=old-school"
# Case 2: nested hash params
posts_path(:filter => {:search => 'the', :category => 'old-school'})
#=> "/posts?filter[search]=the&filter[category]=old-school"
カテゴリ パラメータをメイン URL の一部にしたい場合は、Case 1でこれを行うことができます。
match 'posts(/:category)', :to => 'posts#index'
次のルートが表示され、一致します。
# Case 1: non nested hash params
posts_path(:search => 'the', :category => 'old-school')
#=> "/posts/old-school?search=the"
しかし、param がネストされている場合 (ケース 2 ) 、どうすれば同じことができますか?
次のルート定義を期待します。
match 'posts(/:filter[category])', :to => 'posts#index'
このように動作するには:
# Case 2: nested hash params
posts_path(:filter => {:search => 'the', :category => 'old-school'})
#=> "/posts/old-school?filter[search]=the"
しかし、うまくいきません。
この同じ質問が 2 つの場所で見つかりましたが、正しい答えはありません。
Rails ガイドでは、これについて何も指定していません。
これはレールではできないと思いますか?本当?