Rails 3.1 жемчужина кокона для вложенных форм - PullRequest
1 голос
/ 10 октября 2011

Я на самом деле пытаюсь использовать кокон gem (от nathanvda) вместе с simple_form gem для динамического добавления и удаления полей в форме. Я не понимаю, почему вложенная форма не отображается в моих формах. Вот код. (Я новичок, конечно). Пожалуйста, можно мне помочь.

Меню / _form.html.erb

<% = simple_form_for @menu do | f | %>

     <%= f.input :name %>
    <%= f.input :price %>

   <%= f.simple_fields_for :drinks do |drink| %>
       =render "drink_fields", :f => drink.links %> 
      <%= link_to_add_association "Add drink"%>
     <%end%> 

     <%= f.button :submit %> 
        <%end%>

Меню / _drink_fields.html.erb

.nested-поля <% = f.input: name%> <% = link_to_remove_association "удалить напиток", f%>

это модели

class Drinks < ActiveRecord::Base
    belongs_to :menu
end

class Menu < ActiveRecord::Base
    attr_accessible :drinks_attributes  

  has_many :drinks, :dependent => :destroy

  accepts_nested_attributes_for :drinks

end

в активах / javascripts / application.js

//= require cocoon

в раскладках / application.html.erb

<%= javascript_include_tag :cocoon %> 

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Ваша вложенная форма неверна, вы смешиваете haml и erb.Если у вас пока нет личных предпочтений, я бы порекомендовал использовать хамл, я считаю, что он намного проще и чище, чем эрб.

При всем этом ваш menu/_drink_fields.html.erb должен выглядеть следующим образом:

<div class='nested-fields'> 
  <%= f.input :name %> 
  <%= link_to_remove_association "remove drink", f %>
</div>

Кроме того, внутри вашего menu/_form.html.erb вы должны написать следующее:

<%= f.simple_fields_for :drinks do |drink| %>
   <%= render "drink_fields", f: drink %> 
<% end %>
<%= link_to_add_association "Add drink", f, :drinks %>

Надеюсь, это поможет.

0 голосов
/ 13 октября 2011

Спасибо за доводы nathanvda.I, наконец, найти драгоценный камень для обработки вложенных полей, вот ссылка: https://github.com/lailsonbm/awesome_nested_fields.

...