【发布时间】:2016-09-15 04:03:06
【问题描述】:
我正在 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 的答案,了解您的 id 不正确的原因。
标签: ruby-on-rails ruby sinatra erb