0

ReportQuestionAnswerの 3 つのモデルがあります。

答え

belong_to :question

質問

belong_to :reports
has_many :answers, :dependent => :destroy  
accepts_nested_attributes_for :answers, :allow_destroy => true

レポート

has_many :questions, :dependent => :destroy  
accepts_nested_attributes_for :questions, :allow_destroy => true

新しいレポートの作成中に、いくつかの質問がランダムに選択されてレポートに追加され、次のようにフォームが表示されます。

報告書

    <%= form_for @report do |f| %>
    <div class="field">
        <%= f.fields_for :questions do |builder| %>
          <%= render "question_fields", :f => builder %>
        <% end %>
    </div>
    <div class="actions">
        <%= f.submit "Submit Report"%>
    </div>
    <% end %>

---部分的な質問フィールド---

<h4 class="question_name">
    <%= f.object.name %>
</h4>

<%= f.fields_for :answers do |answer,index| %>  
    <%= render 'answer_fields', :f => answer %>  
<% end %>

---Partial Answer_Fields--- <%= f.text_field :name, :placeholder => "ここに回答を追加" %>

しかし、新しいレポートを編集/作成しようとすると、その特定の質問に対する既存の回答がすべて取得されます。私は次のようなものを実装したいのですが:

---部分的な質問フィールド---

<h4 class="ques_title">
    <%= f.object.name %>
</h4>

<% f.object.answers_for_report(@report).each do |answer| %>  
    <%= render 'answer_fields', :f => answer %>  
<% end %>

---部分的な質問フィールド---

  <b>What should be code here so that it again acts same as nested attributes and gets updated succesfully !!!</b>

質問モデル

belong_to :reports
has_many :answers, :dependent => :destroy  
accepts_nested_attributes_for :answers, :allow_destroy => true

def answers_for_report(@report)
    self.answers.where("report_id = ? ",report.id)
end
4

1 に答える 1

1

これが私の質問に対する答えです:

レポートフォームは次のようなものです

<%= form_for @report do |f| %>
<div class="field">
    <%= f.fields_for :questions do |builder| %>
      <%= render "question_fields", :f => builder %>
    <% end %>
</div>
<div class="actions">
    <%= f.submit "Submit Report"%>
</div>
<% end %>

次に、質問'question_fields'は次のようになります

<%= question.fields_for :answers, question.object. answers_for_report(@report) do |answer| %>  
    <%= render 'answer_fields', :f => answer %>  
<% end %>

これにより、回答のコレクション/レコードのセットのみが渡され、選択された回答のフィールドのみがレンダリングされます。

于 2013-01-16T18:22:56.407 に答える