Rails 3.1 жемчужина кокона для вложенных форм
На самом деле я пытаюсь использовать кокон gem(от nathanvda) вместе с simple_form gem для динамического добавления и удаления полей в форме. Я не понимаю, почему вложенная форма не отображается в моих формах. Вот код.(I' м новичок конечно). Пожалуйста, можно мне помочь.
Меню /_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-fields <% = 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
в assets/javascripts/application.js
//= require cocoon
в раскладках / application.html.erb
<%= javascript_include_tag :cocoon %>
2 ответа
Ваша вложенная форма неверна, вы смешиваете haml и erb. Если у вас пока нет личных предпочтений, я бы порекомендовал использовать 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 %>
Надеюсь это поможет.
Спасибо за любезность nathanvda. Я наконец нашел драгоценный камень для обработки вложенных полей, вот ссылка: https://github.com/lailsonbm/awesome_nested_fields.