代码之家  ›  专栏  ›  技术社区  ›  GSto

使用带名称空间路由的链接到的Rails

  •  26
  • GSto  · 技术社区  · 14 年前

    我用管理名称空间创建了一组路由和控制器,在使用这些新路由的链接帮助程序时遇到了一些问题。

    我看到有一些新的路径帮助程序,例如admin_projects_path,它将引导/admin/projects。但是,我很难链接到命名空间中这些对象的显示、编辑、销毁等路径。我该怎么做?

    3 回复  |  直到 14 年前
        1
  •  30
  •   tadman    14 年前

    你应该看到你的所有路线都列在 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
  •  72
  •   rxgx    10 年前

    如果你在用 钢轨3 ,您可以将管理命名空间与变量一起使用,而不是写入长助手路径名。

    观点:

    <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]
    
        3
  •  1
  •   jackpipe    11 年前

    有些方法需要:url选项作为参数,在这种情况下,您可以使用url_生成路径:

    icon(:url => url_for(:controller => "admin/projects", :action => "edit", :id => @project),
         :type => :edit)