Я пытался найти решение этой ошибки.Таким образом, согласно комментарию charlietfl, я пытался сохранить статус удаления где-то локально, тогда rails может удалить ассоциацию позже.Поэтому я изменил код следующим образом:
удалив весь код удаленного скрипта, включая файл delete_song.js.erb
и действие delete_song
и маршрут delete
.затем я позволил пометить вложенный атрибут для удаления в файле модели Artist: accepts_nested_attributes_for :songs, :allow_destroy => true
, затем добавить кнопку удаления в _artist_form.html.erb
файл следующим образом:
<%= button_tag 'x' , :class => 'close_sign', :type => 'button', :onclick => "$('#song_#{song_builder.object.id}_destroy').val('true'); $('#song_#{song_builder.object.id}_div').hide()" %><br/>
и скрытый файл fields_for
как показано ниже:
<%= song_builder.hidden_field :_destroy, :id => "song_#{song_builder.object.id}_destroy" %>
и разрешение :songs_nested_attributes => [:title, :lyrics, :_destroy]
в song_params
после удаления пользователем поля песни, оно будет скрыто и помечено для уничтожения позже