Rails 3.1 cocoon gem用于嵌套表单

时间:2011-10-10 16:55:41

标签: ruby-on-rails forms gem nested cocoon-gem

我实际上正在尝试cocoon gem(由nathanvda)和simple_form gem来动态添加和删除表单上的字段。我不明白为什么嵌套表单不会出现在我的表单上。这是代码。 (我当然是新手)。我可以帮忙吗。

菜单/ _form.html.erb

  

<%= simple_form_for @menu do | f | %GT;

     <%= 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场         &lt;%= f.input:name%&gt;          &lt;%= link_to_remove_association“删除饮品”,f%&gt;

这些是模型

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
layouts / application.html.erb

中的

<%= javascript_include_tag :cocoon %> 

2 个答案:

答案 0 :(得分:1)

您的嵌套表单错误,您正在混合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 %>

希望这有帮助。

答案 1 :(得分:0)

感谢头部nathanvda。我终于找到了一个处理嵌套字段的gem,以下是链接:https://github.com/lailsonbm/awesome_nested_fields