2017-12-10 18 views
0

ネストされたforで動作する検証をコレクションのチェックボックスで作成しようとしています。Rails 4 - 少なくとも1つのチェックボックスがループ内でネストされた形式でチェックされていることを確認してください。

コレクションはeach.doループ内にあります。

<%= simple_form_for @questionnaire do |f| %> 
    <% @questions.each do |question| %> 
     <%= question.name %> 
     <%= f.collection_check_boxes :answer_ids, Answer.where(question_id: question.id), :id, :content %> 
    <% end %> 
<% end %> 

これはQuestionnaireの内部にあります。

answerモデルでanswerを検証しようとしましたが、それぞれの質問でそれを実行する必要があります。少なくともquestionにはチェックボックスをオンにする必要があります。

いずれかのアイデアは素晴らしいでしょう! ありがとうございます!

EDIT:

私の3つの機種との関係:あなたは

validates :answer_ids, presence: true 

の下にこの行は

は、私が思うあなたのモデルに置くようanswer_idsを検証する必要が

class Questionnaire < ActiveRecord::Base 
    has_many :answers 
    has_many :answers, :through => :answers 
end 

class Question < ActiveRecord::Base 
    has_many :questionnaires 
    has_many :answers, through: :questionnaires 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
    has_many :questionnaires, :through => :answers 
end 
+0

これらの 'answer_ids'がこの' question'に属しているかどうかは、 'questionnarie'と' question'の間に何らかの関係があるのか​​、それとも何か不足していますか? – rony36

+0

@ rony36良い点、私は自分の質問を更新しました。 –

答えて

0

あなたを助けるために

+0

ありがとうございますが、実行する必要はありません:少なくとも1つのチェックボックスがチェックされている場合のみ有効です。質問1の場合は1つのチェックボックスをオンにしてフォームが送信されます。 1つのチェックボックスがチェックされます。 –