1

我实际上正在尝试 cocoon gem(by 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-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

在资产/javascripts/application.js

//= require cocoon

在布局/application.html.erb

<%= javascript_include_tag :cocoon %> 
4

2 回答 2

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

希望这可以帮助。

于 2011-10-10T18:50:34.210 回答
0

感谢 nathanvda 的提醒。我终于找到了一个处理嵌套字段的宝石,这是链接:https ://github.com/lailsonbm/awesome_nested_fields 。

于 2011-10-13T15:16:39.283 回答