使用带有命名空间路由的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)