1

私は実際にフォームのフィールドを動的に追加および削除するために、simple_form gemと一緒にcocoon gem(by nathanvda)を試しています.ネストされたフォームがフォームに表示されない理由がわかりません.コードは次のとおりです.(I' m もちろん初心者です。助けてください。

menu/_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%>

menu/_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

layouts/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 に答える