2011-05-20 91 views
3

我有一个常用的布局文件,用于站点范围内。它包含诸如链接:Rails 3名称空间路由:如何将*从*命名空间链接回全局名称空间? [REVISED]

<%= 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的控制器部分,还是有更好的方法可以让我的所有顶级路线在管理员名称空间下正常工作?我将管理员名称空间链接到顶级名称空间以获得很多东西,所以如果我不必特别考虑我的link_to调用,那将是一件好事。

总之,在命名空间控制器下,你是否必须在link_to前加上所有:controller参数前面的前导斜杠以突破命名空间?

+0

尝试使用 '<真正的资源名称> /论坛',甚至<真正的资源名称> _forums_path(或其他指定的路线是这样的,因为这只是一个猜测/建议。 – jaydel 2011-05-20 11:54:29

+0

但是,如果你赶上了我的漂移,那么问题不在于链接到名称空间路由,它是从名称空间路由内部链接到非名称空间路由? :)这就像你必须在你的布局中的链接中使用向前的所有控制器名称的前缀斜线,例如'<%= link_to(“Home”,{:controller =>“/ home”,:action =>:index}%>',否则它会尝试在admin命名空间中找到一个“Home”控制器,在全局命名空间 – d11wtq 2011-05-20 12:01:00

+0

你可能会考虑这个:http://pandejo.blogspot.com/2009/03/rails-nested-resources-tutorial.html – jaydel 2011-05-20 12:01:57

回答

2

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

的config/routes.rb文件:

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

浏览:

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

谢谢,我实际上完全重写了我的问题,而你发布th是的,因为我认为它一定是太糟糕了;)我认为命名路线应该解决很多,你是对的。与路由有一些争斗,但我认为这只是因为我不习惯Rails的做事方式o_O – d11wtq 2011-05-20 13:22:11