Sinatra 控制器删除方法失败
Sinatra controller delete method failing
我有一个供应商模型和控制器,我在其中实现了以下删除方法。每当我单击删除按钮时,我都会收到 "doesn't know this ditty" 错误。
delete '/vendors/:id/delete' do
@vendor = Vendor.find(params[:id])
if logged_in? && @vendor.wedding.user == current_user
@vendor.destroy
redirect '/vendors'
else
redirect "/login", locals: {message: "Please log in to see that."}
end
end
我的删除按钮:
<form action="/vendors/<%=@vendor.id%>/delete" method="post">
<input id="hidden" type="hidden" name="_method" value="delete">
<input type="submit" value="Delete Vendor">
</form>
我的 config.ru 文件已经有 'use Rack::MethodOverride' 并且我的 edit/put 表单工作正常所以 MethodOverride 似乎工作正常。
知道为什么 Sinatra 给我 "Sinatra doesn't know this ditty" 消息只是为了删除吗?
正如 Matt 在评论中所建议的,您可能想尝试通过 set
在您的应用中启用方法覆盖。例如,使用模块化 Sinatra 设置:
class Application < Base
set :method_override, true
# routes here
end
还有一个很好的例子in this writeup
我有一个供应商模型和控制器,我在其中实现了以下删除方法。每当我单击删除按钮时,我都会收到 "doesn't know this ditty" 错误。
delete '/vendors/:id/delete' do
@vendor = Vendor.find(params[:id])
if logged_in? && @vendor.wedding.user == current_user
@vendor.destroy
redirect '/vendors'
else
redirect "/login", locals: {message: "Please log in to see that."}
end
end
我的删除按钮:
<form action="/vendors/<%=@vendor.id%>/delete" method="post">
<input id="hidden" type="hidden" name="_method" value="delete">
<input type="submit" value="Delete Vendor">
</form>
我的 config.ru 文件已经有 'use Rack::MethodOverride' 并且我的 edit/put 表单工作正常所以 MethodOverride 似乎工作正常。
知道为什么 Sinatra 给我 "Sinatra doesn't know this ditty" 消息只是为了删除吗?
正如 Matt 在评论中所建议的,您可能想尝试通过 set
在您的应用中启用方法覆盖。例如,使用模块化 Sinatra 设置:
class Application < Base
set :method_override, true
# routes here
end
还有一个很好的例子in this writeup