我有一个名为api
的名称空间的资源:
namespace :api, defaults: { format: :json } do
resources :thing
end
(结果:/api/thing/:id
)
我想在url中为非资源id变量设置另一个变量:
/api/non_resource/:non_resource_id/thing/:id
如何将:non_resource_id
变量(以及网址的相关non_resource/
部分)添加到命名空间?
答案 0 :(得分:2)
您可以使用scope
:
namespace :api, defaults: { format: :json } do
scope '/non_resource/:non_resource_id' do
resources :thing
# other resources
end
end
答案 1 :(得分:0)
事实证明,答案是在命名空间内的资源中添加自定义路径前缀,而不是命名空间本身:
namespace :api, defaults: { format: :json } do
resources :thing, path: '/non_resource/:non_resource_id/things'
end
此前缀的资源的URL的所有出现的字符串(包括things
在结束,因为这将覆盖默认值,其也只是/things
),并允许访问{{1}变量通过:non_resource_id
控制器中的params
变量。