
SinatraでGET/POSTメソッドを一つのアクションで実装する方法です。
こういうふうに同じ処理をしてるアクションは無駄ですからね。
1 2 3 4 5 6 7 | get '/foo' do p 'hi' end post '/foo' do p 'hi' end |
multi_routeという拡張モジュールを使って解決できました。
sinatra-contribをgemでインストールして、
$ sudo gem install sinatra-contrib
1 2 3 4 5 | require 'sinatra' require "sinatra/multi_route" route :get, :post, '/foo' do p 'hi' end |
もしくは、
1 2 3 4 5 6 | class MyApp < Sinatra::Base register Sinatra::MultiRoute route :get, :post, '/foo' do p 'hi' end end |
です。
(参考) Sinatra::MultiRoute (part of Sinatra::Contrib)
(参考) Sinatra::Contrib
環境
Mac OS X 10.8.3
ruby 2.0.0p0
sinatra 1.4.2
ruby 2.0.0p0
sinatra 1.4.2