【问题标题】:rails update and create 2 models in one form_forrails 在一个 form_for 中更新并创建 2 个模型
【发布时间】:2015-10-04 04:28:04
【问题描述】:

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

【问题讨论】:

  • 创建或更新时是否出现问题?

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


【解决方案1】:

您似乎需要更改 question_prams 方法以指定“survey_attributes”。

def question_pramas
  params.require(:question).permit(:content, survey_attributes: [:title])
end

【讨论】:

  • 能否分享服务器日志中的 post/put 参数?
【解决方案2】:

要进一步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

【讨论】:

  • 当我将 :surveys 更改为 :survey 时,文本字段不再可见
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多