- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
虽然我一直在获取未经许可的属性错误,但我已经在考试 Controller 中允许了这些属性。
第一层嵌套工作正常。第二级,答案不保存,服务器说“unpermitted parameters: answers”
我们将不胜感激任何帮助
模型exam.rb
class Exam < ActiveRecord::Base
mount_uploader :attachment, PdfUploader #mount the pdf uploader
validates_presence_of :title, :date, :unit
belongs_to :unit
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:question].blank? }, :allow_destroy => true
end
问题模型question.rb
class Question < ActiveRecord::Base
belongs_to :exam
has_one :answer, :dependent => :destroy
accepts_nested_attributes_for :answer#, :reject_if => lambda { |a| a[:answer].blank? }, :allow_destroy => true
end
答案模型answers.rb
class Answer < ActiveRecord::Base
belongs_to :question
end
exams_controller.rb
def new
@exam = Exam.new
2.times do
question = @exam.questions.build()
1.times{ question.build_answer }
end
结束
def exam_params
params.require(:exam).permit(:title, :attachment, :date, :unit_id,
questions_attributes:[ :id, :question, :exam_id, :_destroy,
answer_attributes:[:id, :answer, :question_id, :_destroy]]
)
end
_form.html.haml
.field
= f.label :Exam_Title
= f.text_field :title , size: 100
.field
= f.label :date
= f.datetime_select :date
.field
= f.fields_for :questions do |builder|
=render "questions/question_fields", :f => builder
question_fields.html.haml 部分
%br/
= f.label :question, "Question"
%br/
= f.text_area :question
%br/
= f.check_box :_destroy
= f.label :_destroy, "Remove Question"
= f.fields_for :answers, @question.answer do |builder|
=render "answers/answer_fields", :f => builder
answer_fields.html.haml 部分内容
%br/
= f.label :answer, "Answer"
= f.text_field :answer
= f.check_box :_destroy
= f.label :_destroy, "Remove Answer"
服务器响应
Processing by ExamsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Wns/Q8BAnzge2swUgCmY7yOex3CfUBkViUmiyp7enYMTbeMi+orYS9v7Brqrn7+eTenkaMl9H69vYCt2iqmVcg==", "exam"=>{"title"=>"Now with Answers", "date(1i)"=>"2015", "date(2i)"=>"11", "date(3i)"=>"5", "date(4i)"=>"12", "date(5i)"=>"41", "questions_attributes"=>{"0"=>{"question"=>"What is this?", "_destroy"=>"0", "answers"=>{"answer"=>"This is what", "_destroy"=>"0"}, "id"=>"22"}, "1"=>{"question"=>"What is that?", "_destroy"=>"0", "answers"=>{"answer"=>"That is that!", "_destroy"=>"0"}, "id"=>"23"}}, "unit_id"=>"4"}, "commit"=>"Save", "id"=>"14"}
Exam Load (0.3ms) SELECT "exams".* FROM "exams" WHERE "exams"."id" = $1 LIMIT 1 [["id", 14]]
Unpermitted parameter: answers
Unpermitted parameter: answers
(0.1ms) BEGIN
Question Load (0.2ms) SELECT "questions".* FROM "questions" WHERE "questions"."exam_id" = $1 AND "questions"."id" IN (22, 23) [["exam_id", 14]]
Unit Load (0.3ms) SELECT "units".* FROM "units" WHERE "units"."id" = $1 LIMIT 1 [["id", 4]]
(0.2ms) COMMIT
更新
改变:
def exam_params
params.require(:exam).permit(:title, :attachment, :date, :unit_id,
questions_attributes:[ :id, :question, :exam_id, :_destroy,
answers_attributes:[:id, :answer, :question_id, :_destroy]]
)
end
收件人:
def exam_params
params.require(:exam).permit(:title, :attachment, :date, :unit_id,
questions_attributes:[ :id, :question, :exam_id, :_destroy,
answer:[:id, :answer, :question_id, :_destroy]]
)
end
还是不行。同时将其更改为
def exam_params
params.require(:exam).permit(:title, :attachment, :date, :unit_id,
questions_attributes:[ :id, :question, :exam_id, :_destroy,
answers:[:id, :answer, :question_id, :_destroy]]
)
end
返回错误:
ActiveRecord::UnknownAttributeError (unknown attribute 'answers' for Question.):
在我的 Rails 控制台上:
question.answer
=> #<Answer id: nil, answer: nil, created_at: nil, updated_at: nil, question_id: 21>
还是不明白是怎么回事。请帮帮我。
为表单呈现的 HTML:
<div class='field'>
<br>
<label for="exam_questions_attributes_0_question">Question</label>
<br>
<textarea name="exam[questions_attributes][0][question]" id="exam_questions_attributes_0_question">
What is this?</textarea>
<br>
<input name="exam[questions_attributes][0][_destroy]" type="hidden" value="0" /><input type="checkbox" value="1" name="exam[questions_attributes][0][_destroy]" id="exam_questions_attributes_0__destroy" />
<label for="exam_questions_attributes_0__destroy">Remove Question</label>
<br>
<label for="exam_questions_attributes_0_answers_answer">Answer</label>
<input type="text" name="exam[questions_attributes][0][answers][answer]" id="exam_questions_attributes_0_answers_answer" />
<input name="exam[questions_attributes][0][answers][_destroy]" type="hidden" value="0" /><input type="checkbox" value="1" name="exam[questions_attributes][0][answers][_destroy]" id="exam_questions_attributes_0_answers__destroy" />
<label for="exam_questions_attributes_0_answers__destroy">Remove Answer</label>
<input type="hidden" value="22" name="exam[questions_attributes][0][id]" id="exam_questions_attributes_0_id" /><br>
<label for="exam_questions_attributes_1_question">Question</label>
<br>
<textarea name="exam[questions_attributes][1][question]" id="exam_questions_attributes_1_question">
What is that?</textarea>
<br>
<input name="exam[questions_attributes][1][_destroy]" type="hidden" value="0" /><input type="checkbox" value="1" name="exam[questions_attributes][1][_destroy]" id="exam_questions_attributes_1__destroy" />
<label for="exam_questions_attributes_1__destroy">Remove Question</label>
<br>
<label for="exam_questions_attributes_1_answers_answer">Answer</label>
<input type="text" name="exam[questions_attributes][1][answers][answer]" id="exam_questions_attributes_1_answers_answer" />
<input name="exam[questions_attributes][1][answers][_destroy]" type="hidden" value="0" /><input type="checkbox" value="1" name="exam[questions_attributes][1][answers][_destroy]" id="exam_questions_attributes_1_answers__destroy" />
<label for="exam_questions_attributes_1_answers__destroy">Remove Answer</label>
<input type="hidden" value="23" name="exam[questions_attributes][1][id]" id="exam_questions_attributes_1_id" />
</div>
<div class='field'>
<label for="exam_unit">Unit</label>
<select name="exam[unit_id]" id="exam_unit_id"><option value="1">Introduction to Comp Science</option>
<option value="2">Human Computer Interaction</option>
<option value="3">Management Information Systems</option>
<option selected="selected" value="4">Management Information Systems II</option></select>
</div>
<div class='actions'>
<input type="submit" name="commit" value="Save" />
</div>
最佳答案
我想我已经解决了。问题是,我必须添加编辑我的 exam.rb
模型,使其看起来像这样:
belongs_to :unit
has_many :questions, :dependent => :destroy
has_many :answers, :through => :questions
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:question].blank? }, :allow_destroy => true
注意:我创建了一个名为 response
的新模型,其字段与 answer
完全相同,并按照建议编辑了我的 exam_controller.br
通过 Rich Peck
似乎将行 has_many :answers, :through => :questions
添加到我的父模型中解决了这个问题。现在 parameter response
更改为 response_attributes
应该是这样。
谢谢,Rich Peck真的很有帮助。
关于ruby-on-rails - 具有 has_one 关系的两级深度嵌套形式中的不允许参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33547212/
我有一个 ASP.NET 网站,我希望只允许 AD 组中的用户访问该网站。我正在使用如下的 web.config 片段,但这似乎不起作用:
仅当选中所有框时才应禁用“允许”按钮。我该怎么做?我已经完成了 HTML 部分,如下所示。如何执行其中的逻辑部分?即使未选中一个复选框,也应禁用“允许”按钮
当前有一个Navigator.push(context,route),但是上下文部分返回了错误,在尝试调试后,我发现问题是因为我在调用一个函数而不是直接将home设置为widget树。但是现在我不确定
这是我的邮政编码正则表达式 ^[a-zA-Z0-9]{1,9}$ 但不允许 A-12345。如何更改 - 也将被允许的正则表达式? 最佳答案 在字符集的开头或结尾添加-([...]): ^[-a-zA
我目前正在建立我的网站,但遇到了一个问题 JavaScript 中的混合内容阻止 当我尝试加载和显示来自 的图像和页面时,Chrome、Mozilla 和 Explorer 会发生这种情况http 我
我见过使用: [mysqld] bind-address = 255.112.324.12 允许远程访问单个 IP。我如何允许从 mysql 远程访问所有 IP? 最佳答案 如果你想允许它用于所
我想知道是否可以使用模板实现某些功能。我想要做的是允许特定的“复制构造函数和赋值运算符”从一个模板到另一个模板并禁用其他模板。 我想我只完成了一件我想要的事情,所以我提供了下面的类(class)。对于
这个问题在这里已经有了答案: How to validate an email address in PHP (15 个答案) 关闭 2 年前。 正则表达式让我大吃一惊。我如何更改此设置以验证带有加
解析可以采用以下格式之一的日期的最佳方法是什么 "dd-MM-yyyy HH:mm" "dd/MM/yyyy HH:mm" "dd.MM.yyyy HH:mm" 无需创建 3 个 SimpleD
我们知道,下面的代码格式不正确,因为成员 x 在依赖的基类中。但是,将指定行上的 x 更改为 this->x 将修复错误。 template struct B { int x; }; tem
如果能帮助我理解“Java 并发实践”中的以下内容,我将不胜感激: Calling an overrideable instance method(one that is neither privat
此时如果上传一个不在预定义的安全扩展名列表,如.lrc,会报错: File type does not meet security guidelines. Try another. 解决此问题有
我有一个运行韵律,可以为我的几个域和一个 friend 域处理 XMPP。我 friend 域中的一位用户(他的妻子)想更改她的密码(实际上她忘记了她,所以我会用 prosodyctl 设置一个,然后
使用 nginx,您可以允许和拒绝范围和 ips (https://www.nginx.com/resources/admin-guide/restricting-access/)。使用realip模
什么是一些好的克里金法/插值想法/选项,可以让重度权重的点在绘制的 R map 上的轻权重点上流血? 康涅狄格州有八个县。我找到了质心并想绘制这八个县中每个县的贫困率。其中三个县人口稠密(约 100
我正在使用 virtualbox + ubuntu + vagrant . 但是我不能ping或 wget任何网址。请指导我如何允许虚拟机访问我的主机的互联网? 最佳答案 这对我有用。 使用此配置 V
标题可能有点令人困惑,所以让我向您解释一下。 在 Swift 中,我们可以拥有带有默认参数值的函数,例如: func foo(value: Int = 32) { } 我们也可以有 In-Out 参数
有TextView1 和TextView2。 TextView2 应该 float 在 TextView1 的右侧。只要两个 TextView 的总宽度不使 TextView2 与右侧的框重叠,Tex
使用 Magento 收集方法 addFieldToFilter 时是否可以允许按 NULL 值进行过滤?我想选择集合中具有自定义属性的所有产品,即使没有为该属性分配任何值。 最佳答案 您不需要使用
我正试图从 .htaccess 文件中的规则中“排除”一个目录(及其所有文件夹)... 不确定这是否可能? .htaccess 文件是这样的: Order Allow,Deny Deny from a
我是一名优秀的程序员,十分优秀!