多态url_for的默认命名空间

时间:2009-12-28 23:10:14

标签: ruby-on-rails

在我的应用程序中,我有一个命名空间管理部分。这是我的routes.rb的片段:

map.namespace :admin do |admin|
  admin.resources :contents
end

map.resources :contents

在我的管理员命名空间内,现在我正在使用以下内容:

link_to content, admin_content_path(content)

但我想这样做:

link_to content, content

目前相当于:

link_to content, content_path(content)

是否有办法让属于控制器的视图中的所有链接都以名称空间为前缀?

2 个答案:

答案 0 :(得分:2)

如果我正确地读你,你可以做

link_to content, [:admin, content]

这会让你进入admin_content_path(内容)。当然,假设内容是一个有效的变量(看起来你是从索引脚手架视图中的块中获取此代码)。

但是,视图中的所有restful链接都没有前缀。我建议今后再使用admin_content_path(content)的restful表示法。

答案 1 :(得分:0)

看起来你要两次映射内容,这很奇怪。您不需要在此处使用嵌套资源,这适用于admin是具有has_many内容的对象的情况,在您的情况下这是无法使用的。我建议删除嵌套资源并尝试以下操作。

:path_prefix - 为具有所需路由变量的路由设置前缀。

map.resources :contents, :path_prefix => '/admin'