使用带有命名空间路由的link_to的rails
我已经创建了一组带有admin命名空间的路由和控制器,我在使用这些新路由的链接助手时遇到了一些问题。
我看到有一些新的路径助手,例如admin_projects_path,它通向/ admin / projects。 但是,我无法链接到命名空间中这些对象的show,edit,destroy等路径。 我怎么做?
您应该看到rake routes
路由中列出的所有rake routes
,您可以按名称使用这些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)
如果您使用的是Rails 3 ,则可以将admin命名空间与变量一起使用,而不是编写长辅助路径名。
视图:
<%= link_to 'Show', [:admin, project] %> <%= link_to 'Edit', [:edit, :admin, project] %> <%= link_to 'Destroy', [:admin, project], confirm: 'Are you sure?', method: :delete %>
控制器:
redirect_to [:admin, @project]
有些方法需要:url选项作为参数,在这种情况下,您可以使用url_for生成路径:
icon(:url => url_for(:controller => "admin/projects", :action => "edit", :id => @project), :type => :edit)