我有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分开了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。