【问题标题】:Augmenting Bates' `find_commentable` method增强 Bates 的 `find_commentable` 方法
【发布时间】:2010-10-22 23:48:29
【问题描述】:

我正在观看有关多态关系的 Ryan Bates 截屏视频,他使用这种私有方法来查找与嵌套模型相关的所有 cmets。

所以我可以用这个找到给定帖子的所有 cmets:

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

cmets 以这种形式发布:

- 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,它的控制器必须指定什么?

【问题讨论】:

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


    【解决方案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 传递。

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

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2016-06-17
      • 2020-10-14
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多