加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 深嵌套导轨4表格

发布时间:2020-12-16 19:17:20 所属栏目:百科 来源:网络整理
导读:我有3个模型Item接受嵌套的问题和问题属性接受嵌套的答案属性.我正在尝试以相同的形式创建一个有问题和答案的项目. item.rb的 class Item ActiveRecord::Base has_many :questions,dependent: :destroy accepts_nested_attributes_for :questionsend questio
我有3个模型Item接受嵌套的问题和问题属性接受嵌套的答案属性.我正在尝试以相同的形式创建一个有问题和答案的项目.

item.rb的

class Item < ActiveRecord::Base
  has_many :questions,dependent: :destroy
  accepts_nested_attributes_for :questions
end

question.rb

class Question < ActiveRecord::Base
  belongs_to :item

  has_many :answers,dependent: :destroy
  accepts_nested_attributes_for :answers
end

answer.rb

class Answer < ActiveRecord::Base
  belongs_to :question
end

item_controller.rb

class ItemsController < ApplicationController
    def new
      @item = @repository.items.new
      questions = @item.questions.build
      answers = questions.answers.build
    end

    def create
      @item = Item.new(item_params)
      if @item.save
          redirect_to @item,notice: '...'
      else
          render action: 'new'
      end
    end

  private
  def item_params
      params.require(:item).permit(:id,:content,:kind,:questions_attributes => [:content,:helper_text,:kind],:answers_attributes => [:content,:correct])
  end   
end

_form.haml

= simple_form_for(@item) do |f|
    = f.input :kind
    = f.input :content
    = f.simple_fields_for :questions do |q|
        = q.input :content
        = q.simple_fields_for :answers do |a|
            = a.input :content
    = f.submit

表单正确显示,并正确保存问题模型.我似乎无法保存答案.

我已经看过很多在线帮助,但没有人用Rails 4强大的参数覆盖它.

解决方法

我认为你的问题在于你强大的障碍:
def item_params
      params.require(:item).permit(:id,questions_attributes: [:content,answers_attributes: [:content,:correct]])
end

基本上,当您传递深层嵌套表单(您有多个依赖模型)时,您必须将属性作为其他模型属性的一部分传递.你把params分开了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读