我想在管理界面中管理一个名为User
的模型。
管理界面路由看起来像
namespace :admin do
resources :users
end
当我在像link_to 'Show', @user
这样的视图中创建链接时,我得到了
错误undefined method 'user_path'
。
如何自动将该网址变为admin_user_path
(即/admin/users/:id
而不是/users/:id
)
目前我无处不在(索引视图,显示视图,编辑,表单网址等):
link_to 'Show', admin_user_url(@user)
答案 0 :(得分:0)
要链接到命名空间路由,请传递一个数组:
link_to 'Show', [:admin, @user]
如果您想要的是将路线嵌套在/admin
下而不向路线助手添加管理员前缀,请使用scope
代替namespace
:
scope :admin, module: :admin do
resources :users
end
Prefix Verb URI Pattern Controller#Action
users GET /admin/users(.:format) admin/users#index
POST /admin/users(.:format) admin/users#create
new_user GET /admin/users/new(.:format) admin/users#new
edit_user GET /admin/users/:id/edit(.:format) admin/users#edit
user GET /admin/users/:id(.:format) admin/users#show
PATCH /admin/users/:id(.:format) admin/users#update
PUT /admin/users/:id(.:format) admin/users#update
DELETE /admin/users/:id(.:format) admin/users#destroy
如果您只有/admin/users
路线而不是/users
路线,则表示资源的方式不同,这是有意义的 - 在这种情况下,请使用link_to 'Show', [:admin, @user]
消除歧义。