1

我正在使用 rails cast 196 ( http://railscasts.com/episodes/196-nested-model-form-revised?autoplay=true ) 来帮助我完成我的项目,我正在尝试修改代码以便当我制作一个新问题,我可以在表格中更改调查的标题。现在表单已提交,但数据库中的调查标题没有更改

class Survey < ActiveRecord::Base
  has_many :questions
end

我将 Accept_nested_attributes_for 从调查移到问题模型

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 %>
  ...
4

2 回答 2

2

看来您需要更改 question_prams 方法以指定“survey_attribute s ”。

def question_pramas
  params.require(:question).permit(:content, survey_attributes: [:title])
end
于 2015-10-04T05:41:57.837 回答
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
于 2015-10-04T14:32:34.343 回答