rails更新并在一个form_for中创建2个模型

时间:2015-10-04 04:28:04

标签: ruby-on-rails forms form-for nested-form-for

我正在使用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 %>
  ...

2 个答案:

答案 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