Şu anda yaklaşık 3 gün boyunca okumakta ve araştırmaktayım. Bu benim son başvurum.accepts_nested_attributes_for raylar 4 silinmiyor
land.rb:
has_many :uploads , :dependent => :destroy
accepts_nested_attributes_for :uploads, :allow_destroy => true,:reject_if => :all_blank
upload.rb
belongs_to :land
_land_form_partial.html.erb
<%= form_for land , :html => {:multipart => true} do |f| %>
<%= f.fields_for :uploads do |builder| %>
<div class="land_fields">
<%= builder.label :filename, "Image" %>
<%= builder.text_field :filename %> <br/>
Delete: <%= builder.check_box :_destroy %>
</div>
<% end %>
#... buttons and other fields
<% end %>
lands_controller.rb
def update
if @land.update_attributes(land_params)
flash[:success] = "Land updated"
redirect_to lands_path
else
flash[:alert] = @land.errors.full_messages.first
redirect_to edit_land_path
end
end
def land_params
params.require(:land).permit(uploads_attributes: [ :id, :filename ] )
end
Metin alanına bir şey eklediğimde ve güncellediğimde, tüm güncelleştirmeler düzgün şekilde güncelleştirildi. Onay kutusunu tıklarsam alanı kaldırmaz.
Birisi buna ışık tutabilir mi?
Ayrıca, gerçek kaydı kaldırmak dışında awesome_nested_fields çalıştım.
şimdiden teşekkür ederiz.
DÜZENLEME: Çözüm: @nTraum
içinTeşekkür (Birisi nefret gibi ben hemen çözüm göremiyorum zaman mobil görüntülemek için istemesi halinde, söz konusu çözüm koymak ister)
def land_params
params.require(:land).permit(uploads_attributes: [ :id, :filename, :_destroy ] )
end
Ve tüm züppe olacak :)
Bu forma 'Sil' onay kutusunu işaretleyin kullanılan alır gibi, hem de sizin iç içe modeli için:_destroy
parametreyi izin vermelisiniz
Aynı sorun vardı ama benim durumumda: id alanını atlıyordum. Daha sonra, yuvalanmış bir modeli silmek istiyorsanız, aşağıdakilere izin vermeniz gerekir: iç içe geçmiş modelin id ve: _detroy nitelikleri. –