如何更改 Rails 路由上的自动命名参数 ID?
How to change automatic named parameter id on Rails route?
我的路由文件有方法完成的定义:
resources :disputes do
scope module: :disputes do
resources :conferences, shallow: true do
put :finish
end
end
end
Rails 自动将参数 ID 命名为 :conference_id
,但我希望改用 :id
。
conference_finish PUT /conferences/:conference_id/finish(.:format) disputes/conferences#finish {:format=>:json}
有办法吗?谢谢。
你可以这样做:
put "conferences/:something/finish", to: "disputes/conferences#finish"
您可以根据 this guide's section 使用 member 选项来改进 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
有了这个,您的控制器中就会有参数[:id]。顺便说一句,资源的嵌套深度不应超过 1 层。查看 2.7.1 Limits to Nesting
我的路由文件有方法完成的定义:
resources :disputes do
scope module: :disputes do
resources :conferences, shallow: true do
put :finish
end
end
end
Rails 自动将参数 ID 命名为 :conference_id
,但我希望改用 :id
。
conference_finish PUT /conferences/:conference_id/finish(.:format) disputes/conferences#finish {:format=>:json}
有办法吗?谢谢。
你可以这样做:
put "conferences/:something/finish", to: "disputes/conferences#finish"
您可以根据 this guide's section 使用 member 选项来改进 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
有了这个,您的控制器中就会有参数[:id]。顺便说一句,资源的嵌套深度不应超过 1 层。查看 2.7.1 Limits to Nesting