Rails simple_form Поля вложенной модели не будут отображаться

Я использую Rails 3.2 и simple_form для создания приложения. Я пытаюсь, чтобы каждая вложенная модель отображала свои поля на другой вкладке, используя Twitter Bootstrap. Прочитав некоторые вопросы о переполнении стека, люди, похоже, рекомендовали гем-кокон, который я тоже установил. Я пытаюсь следовать примеру на сайте кокона (https://github.com/nathanvda/cocoon) но почему-то не работает. (Может быть проблема в моем переводе Slim на стандартный Rails).

Вот мой код, я стараюсь вырезать фрагменты, которые не имеют отношения к делу.

Вот мои модели:

class SuperRequest < ActiveRecord::Base
attr_accessible (all of my fields)
has_many :prisms
accepts_nested_attributes_for :prisms

class Prism < ActiveRecord::Base
attr_accessible :access, :business_client, :sla
belongs_to :super_request

Моя форма выглядит следующим образом:

<%= simple_form_for @super_request, :html => {:class => 'form-horizontal'} do |f| %>
<div class="tabbable"> <!-- Only required for left/right tabs -->
 <ul class="nav nav-tabs">
  <li class="active"><a href="#tab1" data-toggle="tab">Basic Information</a></li>
  <li><a href="#tab2" data-toggle="tab">Prism</a></li>
  <li><a href="#tab3" data-toggle="tab">Computer</a></li>
  <li><a href="#tab4" data-toggle="tab">Software</a></li>
  <li><a href="#tab5" data-toggle="tab">IM</a></li>
 </ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
  <%= f.input :ntid, label: 'NTID' %>
  (a lot more fields)
</div>

<div class="tab-pane" id="tab2">
  <p> Content for PRISM </p>
    <%= f.simple_fields_for :prisms do |prism| %>
      <%= render 'prism_fields', :f => prism %>
    <% end %>
</div>

Я создал партиал для полей призмы. Вот что у меня есть в этом партиале.

<%= .nested-fields %>
<%= f.inputs do %>
  <%= f.input :access %>
  <%= f.input :business_client %>
  <%= f.input :sla %>
<% end %>

Страница отображается, и появляется мой жестко закодированный текст «Контент для PRISM». Но поля для призмы нет.

Вся помощь приветствуется.


person Scott S.    schedule 14.05.2013    source источник


Ответы (1)


Вы строите какие-либо Prism объекты?
Например:
1) <% @super_request.prisms.build %>
ИЛИ несколько объектов:
2)<% 3.times {@super_request.prisms.build} if @super_request.prisms.empty? %>

Обновление. Например, попробуйте вставить после :

<p> Content for PRISM </p>

Эта строка кода:

<% @super_request.prisms.build %>
person zolter    schedule 14.05.2013
comment
Я немного новичок, я не понимаю, что вы спрашиваете. - person Scott S.; 14.05.2013
comment
Привет, @zolter, не могли бы вы объяснить, почему это нужно сделать? У меня та же проблема, и ваше решение сработало, но кажется, что это 1) должно быть в контроллере? и 2) должно быть упомянуто на сайте/вики Cocoon, но я не вижу упоминания о необходимости создания ассоциации даже в примерах проектов. - person DazBaldwin; 12.11.2013
comment
Нам нужно построить объект, потому что коллекция prisms пуста. Да, лучшее решение написать этот код в контроллере - person zolter; 13.11.2013