Рендеринг частичных вложенных форм в других контроллерах - PullRequest
1 голос
/ 21 июля 2011

У меня есть три ресурса: работа, вопросы и ответы.Отношения: у работы много вопросов;Вопрос имеет много ответов;Работа имеет много ответов.

Я вложил все формы в вакансии / новое представление.

Теперь цель приложения для администраторов (нас) - создавать рабочие места и вопросы, стоящие заадминистративная стена.Как только мы это сделаем, мы хотим перечислить вопросы, созданные для каждой конкретной работы, и попросить пользователей ответить на вопросы.Это требует размещения формы ответов в другом представлении (таком же или другом контроллере), которое не находится за стеной администратора.

Поскольку все формы вложены в задание / новое представление, я создал частичное для формы ответов:

 <%= 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) Где лучше всего создать этот вид?Вначале я думал о другом представлении вакансий, поскольку оно будет вложено в родительский ресурс, но я не совсем уверен, работает ли оно.

Спасибо, и дайте мне знать, если вам нужна дополнительная информация или разъяснения.

Ответы [ 2 ]

2 голосов
/ 23 июля 2011

Как насчет сохранить ту же структуру, что и у вас, но не отображать поля, связанные с моделями заданий и вопросов?Таким образом, вложение будет по-прежнему передаваться контроллеру, и вам не нужно менять эту функцию.

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

Будет ли это работать для вас?

2 голосов
/ 21 июля 2011

Попробуйте выполнить

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

Вместо

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