3

質問と回答を作成するビューを作成しました。これは私の質問と回答のモデルです:

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私の回答モデルには、どの回答が正しい場合に true を設定するための type booleanという属性もあり、デフォルトは 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属性がチェックされているかどうか、およびコントローラーでその値を確認する方法はありますか?

4

2 に答える 2

2

params[:question][:answers_attributes][0][:correct]は true または false のいずれかの値があります。params[:question][:answers_attributes][0][:correct]には値が 1 つしかないためです。ユーザーが選択した値を確認できます。

選択したラジオ ボタンの値のみがサーバーに送信されます。

于 2012-10-28T12:33:46.390 に答える
1

params[:question][:answers_attributes] を反復処理して、ラジオ ボタンがオンになっているかどうかを確認する必要があります。あなたはこのようなことをすることができます、

params[:question][:answers_attributes].collect do |answer_attribute|
     answer_attribute if answer_attribute.last["correct"] == true
end.compact

これは、true として修正された回答属性の配列を返します。

于 2012-10-28T15:35:38.653 に答える