カクカクしかじか

技術的なアレコレ

Railsで同一アクション内でHTTPメソッドの種類によって分岐をしたい場合の実装方法

今回のお悩み

同じURLでGETで呼ばれた時とPOSTで呼ばれた時で、同一アクション内で処理を分岐したい...

検証環境

  • Rails 4.2.9 (Rails5でも動くと思う)

答え

requestオブジェクトのHTTP判定メソッドで分岐出来る!

実装例

routes.rb

get   '/register'    => 'users#register'
post  '/register'    => 'users#register'

users_controller.rb

def register
  if request.get?
    # GETでやりたいこと
  elsif request.post?
    # POSTでやりたいこと
  end
  # 任意の処理
end

requestオブジェクトのHTTP判定メソッドまとめ

メソッド名 内容
get? GETかどうか
put? PUTかどうか
patch? PATCHかどうか
post? POSTかどうか
head? HEADかどうか