1

我有三个资源:工作、问题和答案。这些关系是: 约伯有很多问题;问题有很多答案;约伯有很多答案。

我已经在作业/新视图上嵌套了所有表单。

现在,该应用程序的目标是让管理员(我们)在管理员墙后面创建工作和问题。一旦我们这样做了,我们希望列出为每个特定工作创建的问题,并让用户回答问题。这需要将答案表单放在不在管理墙后面的另一个视图(相同或不同的控制器)上。

由于表单都嵌套在作业/新视图中,我为答案表单创建了一个部分:

 <%= 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 %>

我的想法是我创建了一个部分,我将能够在应用程序中的任何地方引用它,但我一直在尝试一切,我似乎无法让它工作。

我基本上有这个设置的两个问题:

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 回答