扩充Bates的`find_commentable`方法

时间:2010-10-22 23:48:30

标签: ruby-on-rails forms ruby-on-rails-3 nested models

我正在观看有关多态关系的Ryan Bates截屏视频,并使用此私有方法查找与嵌套模型相关的所有注释。

所以我可以找到给定帖子的所有评论:

def find_commentable
  params.each do |name, value|
    if name =~ /(.+)_id$/
      return $1.classify.constantize.find(value)
    end
  end
  nil
end

然后用于:

@commentable = find_commentable
@comments = @commentable.comments

评论以此表格发布:

- form_for [@commentable, Comment.new] do |f|
  = f.label :text, 'Comment'
  %br/
  = f.text_area :text, :style => "height: 100px;"
  %br/
  = f.submit "Submit"

但是,如果在同一页面上,我想为每条评论都有一个表格?我如何为它设置form_for,以及它的控制器必须指定什么?

1 个答案:

答案 0 :(得分:-1)

我所做的是从find_commentable方法开始并以这种方式拆分:

def find_commentable
  params.each do |name, value|
    if params[:comment]
      return Comment.find(params[:comment][:id])
    elsif name =~ /(.+)_id$/
      return $1.classify.constantize.find(value)
    end
  end
  nil
end

ID从表单中作为hidden_​​field传递。

从那里,常规控制器将负责保存。