我有一个常见的布局文件,在网站范围内使用。它包含如下链接:
<%= link_to("Home", { :controller => :home, :action => :index }) %>
页眉/页脚中的其他常见链接等。
我的所有控制器都在app/controllers/
目录下。但是我为管理员添加了一个命名空间(禁止用户等):
namespace :admin do
resources :users
end
我的管理员命名空间在外观上没有任何不同感觉,因此它使用与网站其余部分相同的布局。这导致了一些问题,因为我的所有link_to
和url_for
来电被错误解释为:
<%= link_to("Home", { :controller => "admin/home", :action => :index }) %>
这会导致应用崩溃,因为不存在此类路由。我是否必须浏览布局使用的所有模板,并使用前导斜杠更改link_to
的控制器部分,或者是否有更好的方法使所有顶级路由都能正常工作admin命名空间?我将管理命名空间链接到顶级命名空间中以获取大量内容,因此如果我不必对link_to
次调用进行任何特殊考虑,那将会很好。
总之,在命名空间控制器下,您是否必须在:controller
中为所有link_to
参数添加前导斜杠,以便突破名称空间?
答案 0 :(得分:3)
在路由上定义论坛路由并使用forums_path而不是:controller /:action hash应该足够清晰。
配置/ routes.rb中:
match '/forums' => 'forums#index', :as => :forums
查看:
<li class="menuitem"><%= link_to("Forums", forums_path()) %></li>