我有一個問題模型和一個評論模型。在問題#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。 –