我正在创建一个自定义路线,如:
namespace :admin do
root 'users#index'
resources :users do
get 'admin_login' => 'users#admin_login'
end
end
但是当我看到rake routes
时:
admin_user_admin_login GET /admin/users/:user_id/admin_login(.:format) admin/users#admin_login
为什么在这里添加:user_id ?
我只想要:user_id
。
答案 0 :(得分:4)
因为您要在用户资源中创建自定义路由。 Rails正在做你正在告诉它的事情。您想要显示" admin_login"指定用户的路线(这是您当前告诉他们要做的事情)。
移动:
get 'admin_login' => 'users#admin_login'
资源块之外的代码行,您就可以创建自定义路线。
答案 1 :(得分:2)
您需要指定一个on
选项来告诉Rails它对集合有效,而不是成员资源。根据{{3}}
您可以省略:on选项,这将创建相同的成员 路由,但资源ID值可用 params [:photo_id]而不是params [:id]。
您也可以删除=> 'users#admin_login'
部分,因为这是默认行为。
因此,问题的解决方案是添加on: :collection
或将其放在像
namespace :admin do
root 'users#index'
resources :users do
collection do
get 'admin_login'
end
end
end