如果我有这条路线(在 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"
但是,如果参数是嵌套的(案例 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"
但它不起作用。
我在两个没有正确答案的地方发现了同样的问题:
Rails 指南没有具体说明这一点。
我应该假设这不能在 Rails 中完成吗?真的吗?