現在、私は2つのモデル、has_many belongs_to関係でリンクされたレシピと成分を持っています。私のレシピフォームビューでRails常にレシピ - 成分関係にネストフォームを追加
、私は次のコードを持っている:私は試してみて、レシピを編集するたびに、自動的に、しかし
<%= f.simple_fields_for :ingredients do |ingredient| %>
<%= render 'ingredient_fields', f: ingredient %>
<% end %>
<div class="links">
<%= link_to_add_association 'Add Ingredient', f, :ingredients, class: "btn btn-default add-button" %>
と_ingredient_fields.html.erb
.form-inline.clearfix
.nested-fields
= f.input :name, input_html: {class: "form-input form-control"}
= f.input :quantity, input_html: {class: "form-input form-control"}
= link_to_remove_association 'Remove', f, class: "form-button btn btn-default"
のためにすべての成分を再添加する。たとえば、レシピが「Arnold Palmer」と呼ばれていた場合は、レモネードとアイスティーがあり、各成分は一度表示されます。しかし、「編集」ビューに入ると、何も変更しなくても、私がビューに戻ると、レモネードとアイスティーが2回表示されます。編集ビューで成分を読み込まないようにするにはどうすればよいですか?
参照するための表示コード:
<ul>
<% @recipe.ingredients.each do |x| %>
<li><%= (x.quantity * @recipe.rating) %> oz <%= x.name %> </li>
<% end %>
</ul>
EDIT:IDのPARAM:追加した後コントローラ。それはもはや重複成分を追加しませんが、私はまだ成分を除去することができません。
def recipe_params
params.require(:recipe).permit(:name, :rating, :visible, :instructions, :description, :abv, ingredients_attributes: [ :id, :name, :quantity ])
end
はありがとう
:id
パラメータに注意し、このようなものを持っている必要があります。これは、同じ成分を読むことの問題を解決しました。しかし、それでも私はレシピから成分を取り除くことができません。 – Spier123456789http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.htmlに従って、_destroyという名前のフィールド(チェックボックス)とaccepts_nested_attributes_forのallow_destroyオプションを追加する必要があります。 – user894896