【问题标题】:Sinatra controller delete method failingSinatra 控制器删除方法失败
【发布时间】:2016-02-29 07:14:25
【问题描述】:

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

  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' 并且我的编辑/放置表单工作正常,因此 MethodOverride 似乎工作正常。

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

【问题讨论】:

  • 您使用的是什么风格的应用程序,经典的还是模块化的(如果是模块化的,子类化 BaseApplication)? method_override 并非始终启用,您可能需要致电 enable :method_override
  • 使用模块化风格的子类化 Base。在控制器中设置 method_override 就可以了。谢谢!

标签: ruby sinatra sinatra-activerecord


【解决方案1】:

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

class Application < Base

  set :method_override, true

  # routes here
end

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2023-04-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多