我正在使用rails cast 196(http://railscasts.com/episodes/196-nested-model-form-revised?autoplay=true)来帮助我完成项目,我正在尝试修改代码,以便在我提出新问题时,我可以在表单中更改调查的标题。现在表单提交但没有对db
中的Survey的标题进行任何更改class Survey < ActiveRecord::Base
has_many :questions
end
我将accepts_nested_attributes_for从Survey转移到了问题模型
class Question < ActiveRecord::Base
belongs_to :survey
accepts_nested_attributes_for :survey
end
我在问题pramas中添加了:title(我要修改的字段)
def create
@question = Question.new(question_pramas)
end
def question_pramas
params.require(:question).permit(:content, survey_attribute: :title)
end
查看
<%= form_for(@question) do |f| %>
<%= f.fields_for :surveys do |builder| %>
<%= builder.label :title %>
<%= builder.text_field :title, class: 'form-control' %>
<% end %>
...
答案 0 :(得分:2)
您似乎需要更改question_prams方法以指定&#34; survey_attribute s &#34;。
def question_pramas
params.require(:question).permit(:content, survey_attributes: [:title])
end
答案 1 :(得分:1)
要进一步Tom Fast
的回答,您还需要正确排序关联名称:
<%= f.fields_for :survey do |builder| %>
<%= builder.label :title %>
<%= builder.text_field :title, class: 'form-control' %>
<% end %>
#app/controllers/questions_controller.rb
class QuestionsController < ApplicationController
def question_params
params.require(:question).permit(:content, survey_attributes: [:title])
end
end