Rails 3命名空间路由:如何将*从*命名空间链接回全局命名空间? [修订]

时间:2011-05-20 11:50:59

标签: ruby-on-rails ruby routing namespaces

我有一个常见的布局文件,在网站范围内使用。它包含如下链接:

<%= link_to("Home", { :controller => :home, :action => :index }) %>

页眉/页脚中的其他常见链接等。

我的所有控制器都在app/controllers/目录下。但是我为管理员添加了一个命名空间(禁止用户等):

namespace :admin do
  resources :users
end

我的管理员命名空间在外观上没有任何不同感觉,因此它使用与网站其余部分相同的布局。这导致了一些问题,因为我的所有link_tourl_for来电被错误解释为:

<%= link_to("Home", { :controller => "admin/home", :action => :index }) %>

这会导致应用崩溃,因为不存在此类路由。我是否必须浏览布局使用的所有模板,并使用前导斜杠更改link_to的控制器部分,或者是否有更好的方法使所有顶级路由都能正常工作admin命名空间?我将管理命名空间链接到顶级命名空间中以获取大量内容,因此如果我不必对link_to次调用进行任何特殊考虑,那将会很好。

总之,在命名空间控制器下,您是否必须在:controller中为所有link_to参数添加前导斜杠,以便突破名称空间?

1 个答案:

答案 0 :(得分:3)

在路由上定义论坛路由并使用forums_path而不是:controller /:action hash应该足够清晰。

配置/ routes.rb中:

match '/forums' => 'forums#index', :as => :forums

查看:

<li class="menuitem"><%= link_to("Forums", forums_path()) %></li>