破棄するのではなく無効化するために<%= f.hidden_field :_destroy %>
と同等の機能はありますか? (つまり、私は関連から削除することでしたが、削除したくありません)。Railsネストされたモデル - アソシエーションを削除する
例の状況は次のようになります。
のFooさんedit.html.erb
で
class Foo < ActiveRecord::Base
has_many :bar, :dependent=>:nullify, :autosave=>true
accepts_nested_attributes_for :bar, :reject_if => proc { |attributes| attributes.all? {|k,v| v.blank?} }
class Bar < ActiveRecord::Base
belongs_to :foo
:
<%= f.fields_for :bar do |builder| %>
<%= builder.some_rails_helper %>
<%= builder.hidden_field :_remove #<-- set value to 1 to destroy, but how to unassociate?%>
<% end %>
一つの解決策に小さな変更
def remove
#!self.foo_id.nil? should be:
false #this way newly created objects aren't destroyed, and neither are existing ones.
end
だから今、私は呼び出すことができます.edit .htmlを:
class Bar
def nullify!
update_attribute :foo_id, nil
end
end
そして今、あなたはどのバーインスタンス上でそれを呼び出すことができます。
<%= builder.hidden_field :_remove %>
あなたはとても役に立ちます。 – SooDesuNe