使用带有命名空间路由的link_to的rails

GSt*_*Sto 26 ruby-on-rails

我已经创建了一组带有admin命名空间的路由和控制器,我在使用这些新路由的链接助手时遇到了一些问题.

我看到有一些新的路径助手,例如admin_projects_path,它通向/ admin/projects.但是,我无法链接到命名空间中这些对象的show,edit,destroy等路径.我怎么做?

Rya*_*yan 72

如果您使用的是Rails 3,则可以将admin命名空间与变量一起使用,而不是编写长辅助路径名.

视图:

<td><%= link_to 'Show', [:admin, project] %></td>
<td><%= link_to 'Edit', [:edit, :admin, project] %></td>
<td><%= link_to 'Destroy', [:admin, project], confirm: 'Are you sure?', method: :delete %></td>
Run Code Online (Sandbox Code Playgroud)

控制器:

redirect_to [:admin, @project]
Run Code Online (Sandbox Code Playgroud)


tad*_*man 30

您应该看到列出的所有路由,rake routes并且可以按名称使用这些路由以获得正确的命名空间.使用自动检测您传入:controller:action手动将无法正常工作.

如果它new_thing在路线中列出,则该方法new_thing_path具有适当的参数.例如:

link_to('New Project', new_admin_project_path)
link_to('Projects', admin_projects_path)
link_to(@project.name, admin_project_path(@project))
link_to(@project.name, edit_admin_project_path(@project))
link_to(@project.name, admin_project_path(@project), :method => :delete)
Run Code Online (Sandbox Code Playgroud)