1

私には3つのリソースがあります:仕事、質問と回答。関係は次のとおりです。ジョブには多くの質問があります。質問には多くの答えがあります。ジョブには多くの答えがあります。

すべてのフォームをジョブ/新しいビューにネストしました。

このアプリの目標は、管理者(私たち)が管理者の壁の後ろで仕事や質問を作成することです。それが済んだら、特定のジョブごとに作成された質問をリストアップし、ユーザーに質問に回答してもらいます。これには、管理者の壁の後ろにない別のビュー(同じまたは異なるコントローラー)に回答フォームを配置する必要があります。

フォームはすべてjobs/newビューにネストされているため、回答フォームのパーシャルを作成しました。

 <%= form_for(@job) do |f| %>
 <%= f.label :name %><br />
 <%= f.text_field :name %>
  <%= f.fields_for :questions do |builder| %>
   <%= render 'question_fields', :f => builder %>
  <% end %>
 <%= f.submit %>
<% end %>

質問の一部は次のとおりです。

<%= f.label :question, "Question" %>
 <%= f.text_area :question, :rows => 10 %>
 <%= f.check_box :_destroy %>
 <%= f.label :_destroy, "Remove Question" %>

  <%= f.fields_for :answers do |builder| %>
   <%= render 'partials/answer_fields', :f => builder %>
  <% end %>

そして答えは部分的です:

 <%= f.label "Answer" %>
 <%= f.text_area :answer, :rows => 10 %>
 <%= f.hidden_field :question_id, :value => @question %>
 <%= f.hidden_field :job_id, :value => @job.id %>

パーシャルを作成して、アプリ内のどこからでも参照できるようになると思っていたのですが、何でもやってみたのでうまくいかないようです。

私は基本的にこの設定から2つの質問があります:

1)別のビューで回答を部分的にレンダリングするにはどうすればよいですか(正しいコードは何ですか)?2)このビューを作成するのに最適な場所はどこですか?親リソースの下にネストされるため、私の最初の考えは別のジョブビューでしたが、これが機能するかどうかは完全にはわかりません。

ありがとうございます。さらに情報や説明が必要な場合はお知らせください。

4

2 に答える 2

2

ここと同じ構造を維持し、Job および Question モデルに関連付けられたフィールドをレンダリングしないのはどうですか? このようにして、ネストは引き続きコントローラーに渡され、その機能を変更する必要はありません。

<%= form_for(@job) do |f| %>
  <%= f.fields_for :questions do |q| %>
    <%= q.fields_for :answers do |a| %>
      <%= render 'partials/answer_fields', :f => a %>
    <% end %>
  <% end %>
<% end %>

それはあなたのために働くでしょうか?

于 2011-07-23T16:53:10.990 に答える
2

フォローしてみてください

   <%= render :partial=> '/partials/answer_fields', :f => builder %>

それ以外の

   <%= render 'partials/answer_fields', :f => builder %>
于 2011-07-21T06:30:22.800 に答える