Rails 3 form_for params的行动

时间:2011-03-03 08:32:36

标签: ruby-on-rails form-for

<%  form_for [commentable, Comment.new], :action => 'create', :remote => false do |f|%>
<%=f.hidden_field :commentable_id, :value=> commentable.id %><br/>
<%=f.hidden_field :parent_id, :value=>1 %><br/>

还有一个控制器:

def create(commentable)
@commentable = commentable.find(params[:comment][:commentable_id])

如何在for_for中将可评论类型传递给创建操作? 感谢。

2 个答案:

答案 0 :(得分:1)

您需要使用

commentable.class

根据您已经做过的事情,您可以使用隐藏字段:

<%=f.hidden_field :commentable_type, :value=> commentable.class %><br/>

然后在控制器中:

@commentable = Object.const_get(params[:comment][:commentable_type]).find(params[:comment][:commentable_id])

答案 1 :(得分:0)

如果您有可评论的模型,则无需将对象显式传递给控制器​​中的create方法:

def create
  @commentable = Commentable.find(params[:comment][:commentable_id])
  #more code
end

注意可评论中的大写字母C.