加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – Rails嵌套资源和路由 – 如何分解控制器?

发布时间:2020-12-16 19:44:47 所属栏目:百科 来源:网络整理
导读:我有以下型号: 帖子 标签 TaggedPost(Post和Tag通过has_many从…导出它们的关联) 而且我有以下的route.rb文件: resources :tagsresources :posts do resources :tagsend 所以当我浏览到/ posts / 4 /标签时,这将使我在参数数组中设置了post_id值的标签控制
我有以下型号:

>帖子
>标签
> TaggedPost(Post和Tag通过has_many从…导出它们的关联)

而且我有以下的route.rb文件:

resources :tags

resources :posts do
  resources :tags
end

所以当我浏览到/ posts / 4 /标签时,这将使我在参数数组中设置了post_id值的标签控制器的索引动作.凉.

我的问题是,现在我正在访问帖子下的嵌套标签资源,是否应该点击标签控制器?或者我应该设置一些其他控制器来处理标签的嵌套本质?否则,我必须在标签控制器中构建额外的逻辑.这当然可以完成,但这是处理嵌套路由和资源的常用方法呢?标签控制器的索引操作中的代码如下:

TagsController.rb

def index
  if params[:post_id] && @post = Post.find_by_id(params[:post_id])
    @tags = Post.find_by_id(params[:post_id]).tags
  else
    @tags = Tag.order(:name)
  end
  respond_to do |format|
    format.html
    format.json {render json: @tags.tokens(params[:q]) }
  end
end

我可以看到这个控制器中的代码越来越大,因为我计划与标签资源相关联的许多额外的资源.关于如何打破这个想法?

问题总结:

>如果一个资源是嵌套的,嵌套资源是否应该通过代表资源嵌套性质的不同控制器?这是反对正常的控制器,因为我在我提供的代码示例.
>如果是这样,这些控制器应该如何命名和设置?

如果您需要更多信息,请告诉我们.

解决方法

所有您正在使用嵌套资源正在更改路由URL.您只需要做的就是确保将正确的id(在你的案例中)传递给标签控制器.最常见的错误是无法找到*** ID.

如果您不将一个配置文件路由嵌套到用户路由中,则会显示为这样

domain.com/user/1

domain.com/profile/2

当你把路线嵌套就可以了

domain.com/user/1/profile/2

这就是它正在做的一切.没有其他的.你不需要额外的控制器.嵌套路由只是为了看起来.允许您的用户遵循关联.嵌套路由最重要的是确保将link_to设置为正确的路径.

何时不嵌套:它将是user_path和profile_path

当嵌套时,您将需要使用user_profile_path.

耙子路线是您的朋友,以了解路线如何变化.

希望它有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读