Я работаю над проектом в Sinatra, и я не могу заставить метод удаления работать. Мое намерение состоит в том, чтобы удалить объект с помощью формы в модальном режиме. Вот что у меня есть:«Неопределенный метод« удалить »для nil: NilClass» в Sinatra
routes.rb:
delete '/songs/:id/delete' do
@song = Song.where(:id => params[:id]).first
@song.delete
redirect to '/songs'
end
index.erb:
<form action="/songs/:id/delete" method="post">
<input type="hidden" name="_method" value="delete">
<div id="song_id">
<label>id:</label>
<input type="text" name="id">
</div>
<button type="submit" id="delete">Delete</button>
<a href="/songs"><div id="back">Back to Songs</div></a>
</form>
Обратная связь приветствуется. (Кроме того, извините, углубление не является совершенным)
В вашем контроллере '@ song' является' nil' (потому что песня с данным 'id' не найдена). Проверьте, действительно ли 'Song.where ...' возвращает что-то перед его работой (через' .delete'). См. Ответы B Sevens, почему ваш идентификатор неверен. – Felix