我的路线文件有方法完成的定义:
resources :disputes do
scope module: :disputes do
resources :conferences, shallow: true do
put :finish
end
end
end
Rails会自动将名称:conference_id
的参数ID设置为,但我希望改为使用:id
。
conference_finish PUT /conferences/:conference_id/finish(.:format) disputes/conferences#finish {:format=>:json}
有办法做到这一点吗?感谢。
答案 0 :(得分:2)
你可以这样做:
put "conferences/:something/finish", to: "disputes/conferences#finish"
答案 1 :(得分:1)
您可以根据this guide's section使用成员选项来改进Gabriel的答案(我不知道它是否适用于您的情况):
resources :disputes do
scope module: :disputes do
resources :conferences, shallow: true do
member do
put :finish
end
end
end
end
您也可以使用一种方式:
resources :disputes do
scope module: :disputes do
resources :conferences, shallow: true do
put :finish, on: :member
end
end
end
这样你的控制器就会有params [:id]。顺便说一句,资源永远不应该嵌套超过1级。查看2.7.1 Limits to Nesting