我创建了一套路线&具有admin命名空间的控制器,我在使用带有这些新路由的链接助手时遇到了一些问题。
我看到有一些新的路径助手,例如admin_projects_path,它们通向/ admin / projects。但是,我无法链接到命名空间中这些对象的show,edit,destroy等路径。我该怎么做?
答案 0 :(得分: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>
控制器:
redirect_to [:admin, @project]
答案 1 :(得分: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)
答案 2 :(得分:1)
某些方法需要:url选项作为参数,在这种情况下,您可以使用url_for生成路径:
icon(:url => url_for(:controller => "admin/projects", :action => "edit", :id => @project),
:type => :edit)