Sinatra控制器删除方法失败

时间:2016-02-28 20:12:32

标签: ruby sinatra sinatra-activerecord

我有一个供应商模型和控制器,我已经实现了以下删除方法。每当我点击删除按钮时,我都会收到“不知道这个小曲”的错误。

  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文件已经'使用Rack :: MethodOverride'并且我的编辑/放置表单工作正常,因此MethodOverride似乎正在工作。

任何想法为什么Sinatra给我的“Sinatra不知道这个小曲”的消息只是为了删除?

1 个答案:

答案 0 :(得分:0)

根据评论Matt的建议,您可能希望尝试通过set在您的应用中启用方法覆盖。例如,使用模块化Sinatra设置:

class Application < Base

  set :method_override, true

  # routes here
end

还有一个很好的例子in this writeup