我有一个问题模型和一个评论模型。在问题#show view中,我有一个评论表单。我在问题#show controller动作中为表单创建了@comment,然后将它传递给注释#create controller action以实际创建并将注释保存到数据库。但是,一旦@comment参数传递给comment#create动作,我不再拥有需要的issue_id信息。我将如何传递这些信息?下面是我的文件:如何将参数从form_for传递到其他控制器?
<%= form_for @comment do |f| %>
<%= render 'comment_fields', :f => f %>
<%= f.submit "Submit" %>
<% end %>
问题控制器:
def show
@issue = Issue.find(params[:id])
@votes = Votership.where(:issue_id => @issue.id)
@current_user_vote = @votes.where(:user_id => current_user.id).first
@comment = Comment.new
end
和评论控制器:
def create
@comment = Comment.new(params[:comment])
@comment.save
redirect_to :back
end
我通过创建问题#show view的注释来尝试这样的事情,它包含我需要的正确变量。然而,当它传递给注释#create操作时,当我做了Comment.new(params [:comment])它删除了该变量(我相信因为它创建了一个新的注释并且在params中没有包含该变量[ :评论])。当我尝试你的代码时,build_comment给了我一个错误:未定义的方法'build_comment' –
您使用的是哪个版本的Rails?我更新了我的答案。 –
版本3.1 ...我需要的是一种将issue_id传递给我的评论控制器的方法。我几乎通过传递隐藏字段来实现它的工作,就像这样:<%= hidden_field(:issue_id,@ issue.id)%>然而,我不认为我实现了这个权利,因为它传递了一个叫做issue_id key = @ issue.id和value = nil。 –