两个资源使用相同的资源

时间:2014-05-28 14:36:23

标签: ruby-on-rails ruby-on-rails-4 nested-resources

好吧,我不知道怎么称呼它。这是我最好的猜测。这是我的问题:

我有IssuesReviews个控制器。它们都应该嵌套Comments控制器。

我是否必须为icommentIssuesrcomment生成Reviews两个单独的支架,或者是否有办法同时使用资源?

这两个控制器已经嵌套了,所以我想维护它会变得相当混乱。对此最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以将其保留在与两个可评论对象相同的级别:

namespace :whatever
  resources :comments
  resources :issues
  resources :reviews
end

强制请求/whatever/comments获取params[:commentable_id](用于创建,更新和编辑)和params[:commentable_type](用于所有CRUD)的值;)


问题模型的嵌套表单示例:

# issues controller
before_filter :set_issue, only: [:new, :edit, :update, :destroy]
def set_issue
  @issue ||= params[:id].present? ? Issue.find(params[:id]) : Issue.new
end

# view _form
form_for @issue do |f|
  f.text_field :name
  f.fields_for @issue.comments.new do |ff|
    ff.text_field :content
  end
  f.submit "Save!"
end

# Issue model
class Issue < ActiveRecord::Base
  has_many :comments, as: :commentable
  accepts_nested_attributes_for :comments