1
私はSinatraのプロジェクトで作業していますが、削除メソッドが機能しないようです。私の目的は、モーダルでフォームを使用してオブジェクトを削除できるようにすることです。ここで私が持っているものです。"Sinatraの定義されていないメソッド 'delete' for nil:NilClass"
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'を介して)。あなたのIDが正しくない理由については、B Sevensの答えを参照してください。 – Felix