实际上,我不明白如何正确处理这件事。我有一种情况,新闻可以通过管理/编辑管理/显示管理/新闻.类似的路径,但是我想给用户一个名为news/show/1的页面,因为实际上我的新闻资源是在"admin“命名空间下路由的,我应该如何处理这样的事实:我需要在"admin”命名空间之外绑定新闻路由呢?
其实我只有这个:
namespace :admin do
resources :news
end我的想法:
namespace :admin do
resources :news
end
resources :news那我就有:
这是正确的吗?
发布于 2012-11-13 03:14:28
看到你的回答,我可以建议更简单的路线。
#routes.rb
namespace :admin do
resources :news
end
resources :news, :only => [:show]如果您也希望index操作,请将最后一行重写为:
resources :news, :only => [:index, :show]您不需要news_path和news_url的助手。你会得到他们已经为你建造。
发布于 2012-11-13 02:38:32
好吧,在路线上工作了一会儿之后,我明白了如何构建我想要的东西:
namespace :admin do
resources :news
end
get 'news/:id(.:format)' => 'news#show'这是因为我不需要所有的路线我的新闻,但只显示(我也可以添加索引,但目前不需要)。通过这种方式,我可以在两个不同的控制器上处理所有的事情,这更好,因为我在新闻控制器上使用了一些东西,比如在Admin::NewsController上没有使用的重定向。
我注意到了另一件重要的事情,如果您以这种方式构建路由,news_path和news_url将不会被创建为。因此,我不得不在news_helpers中以这种方式手动创建它们:
module NewsHelper
def news_url(record)
url_for controller: 'news', action: 'show', only_path: false, id: record.slug
end
def news_path(record)
url_for controller: 'news', action: 'show', only_path: true, id: record.slug
end
end(段塞用于seo友好的urls)然后,我只需在控制器中以这种方式包含助手:
class NewsController < ApplicationController
include NewsHelper一切都像我想要的那样工作,看起来也很棒。
https://stackoverflow.com/questions/13347819
复制相似问题