首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >映射到管理员/新闻/显示的路径,另一个映射到新闻/显示,我需要2个控制器吗?

映射到管理员/新闻/显示的路径,另一个映射到新闻/显示,我需要2个控制器吗?
EN

Stack Overflow用户
提问于 2012-11-12 16:50:03
回答 2查看 188关注 0票数 0

实际上,我不明白如何正确处理这件事。我有一种情况,新闻可以通过管理/编辑管理/显示管理/新闻.类似的路径,但是我想给用户一个名为news/show/1的页面,因为实际上我的新闻资源是在"admin“命名空间下路由的,我应该如何处理这样的事实:我需要在"admin”命名空间之外绑定新闻路由呢?

其实我只有这个:

代码语言:javascript
运行
复制
namespace :admin do
  resources :news
end

我的想法:

代码语言:javascript
运行
复制
namespace :admin do
  resources :news
end
resources :news

那我就有:

  • app/控制器/管理/新闻控制器.app
  • app/控制器/新闻控制器。

这是正确的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-13 03:14:28

看到你的回答,我可以建议更简单的路线。

代码语言:javascript
运行
复制
#routes.rb
namespace :admin do
  resources :news
end

resources :news, :only => [:show]

如果您也希望index操作,请将最后一行重写为:

代码语言:javascript
运行
复制
resources :news, :only => [:index, :show]

您不需要news_pathnews_url的助手。你会得到他们已经为你建造。

票数 1
EN

Stack Overflow用户

发布于 2012-11-13 02:38:32

好吧,在路线上工作了一会儿之后,我明白了如何构建我想要的东西:

代码语言:javascript
运行
复制
namespace :admin do
  resources :news
end

get 'news/:id(.:format)' => 'news#show'

这是因为我不需要所有的路线我的新闻,但只显示(我也可以添加索引,但目前不需要)。通过这种方式,我可以在两个不同的控制器上处理所有的事情,这更好,因为我在新闻控制器上使用了一些东西,比如在Admin::NewsController上没有使用的重定向。

我注意到了另一件重要的事情,如果您以这种方式构建路由,news_path和news_url将不会被创建为。因此,我不得不在news_helpers中以这种方式手动创建它们:

代码语言:javascript
运行
复制
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)然后,我只需在控制器中以这种方式包含助手:

代码语言:javascript
运行
复制
class NewsController < ApplicationController
  include NewsHelper

一切都像我想要的那样工作,看起来也很棒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13347819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档