我构建了一个视图来创建问题和答案。这是我的问答模型:
class Question < ActiveRecord::Base
attr_accessible :content
belongs_to :topic
belongs_to :user
belongs_to :question_type
has_many :answers, dependent: :destroy
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
attr_accessible :content
belongs_to :question
end
我的答案模型还有一个名为correct
的属性boolean,如果答案正确,则设置为true,默认为false。我已经构建了一个表单来创建一个真/假的问题:
<%= simple_form_for @question do |q| %>
<%= q.input :content, input_html: { rows: 3, class: 'span6' } %>
<%= q.input :mark, input_html: { class: 'span1' } %>
<%= q.association :topic %>
<%= q.association :question_type %>
<%= q.simple_fields_for :answers do |a| %>
<%= a.input :correct, collection: [[true, 'True'], [false, 'False']],
as: :radio_buttons,
label: 'Answer',
value_method: :first,
label_method: :last,
item_wrapper_class: 'inline'
%>
<% end %>
<% end %>
在视图中呈现时的正确属性具有以下html:
<label class="radio inline"><input class="radio_buttons optional" id="question_answers_attributes_0_correct_true" name="question[answers_attributes][0][correct]" type="radio" value="true">True</label>
<label class="radio inline"><input checked="checked" class="radio_buttons optional" id="question_answers_attributes_0_correct_false" name="question[answers_attributes][0][correct]" type="radio" value="false">False</label>
现在在控制器中我想检查选中哪个单选按钮及其值。有没有方法可以检查是否检查了correct
属性及其在控制器中的值?
答案 0 :(得分:2)
params[:question][:answers_attributes][0][:correct]
的值为true或false。由于params[:question][:answers_attributes][0][:correct]
只有一个值。您可以找到用户选择的值。
只有选定的单选按钮的值才会发送到服务器。
答案 1 :(得分:1)
你必须遍历params [:question] [:answers_attributes]以检查是否选中了单选按钮。你可以这样做,
params[:question][:answers_attributes].collect do |answer_attribute|
answer_attribute if answer_attribute.last["correct"] == true
end.compact
这将返回一组答案属性,这些属性被更正为true。