Sinatra路线不适用于模块化应用程序?

时间:2014-04-09 19:32:24

标签: ruby sinatra

我已经将经典的Sinatra应用程序转换为模块化应用程序。现在突然我的putpatchdelete路线停止工作了。 getpost工作正常。有什么我需要做的事情才能让这些在模块化应用程序中工作,这与经典不同吗?

%form{action: "/addsomething", method: 'post'}
  %input{type: 'hidden', name: '_method', value: 'put'}  

当我尝试访问上述路线之一时,我得到了404。

require 'sinatra/base'

class MyClass < Sinatra::Base
    put '/addsomething' do
     'HELLO WORLD!'
    end

    get '/hello' do
      'hello world'
    end
 end

2 个答案:

答案 0 :(得分:1)

method_override设置(允许_method字段覆盖HTTP方法)为false by default in modular style。您需要启用它:

enable :method_override

答案 1 :(得分:0)

您仍然可以从模块化样式继承Sinatra :: Application以保留默认设置:

require 'sinatra/base'

class MyClass < Sinatra::Application
    put '/addsomething' do
     'HELLO WORLD!'
    end

    get '/hello' do
      'hello world'
    end
 end