Ruby on Rails: アクションにルーティングされる時に準備される環境・変数・メソッドのよく使うもの一覧

Ruby on Rails では、コントローラーのアクションが実行される前に、いくつかの変数等を準備しています。このうち、ユーザーが利用できる代表的なものをいくつか列挙します。

  • action_name
    • 実行中のアクション名称を保持しています。
    • 例:action_name => "index"
  • cookies
    • リクエストに関連づけられているクッキーを保持しています。
    • 例:cookies => #>>
  • session
    • セッション
    • 例:session => {"session_id"=>"24adeaebd6b8 ... }
  • params
    • リクエストパラメータを保持するオブジェクト。
    • 例:params => {"controller"=>"articles", "action"=>"index"}
  • request (リクエスト情報を保持するオブジェクト)
    • method
      • リクエストされた HTTP メソッドを保持している
      • 例:request.method => "GET"
    • request_method
      • method とほぼ同義
    • delete?, get?, head?, post?, put?
      • リクエストされた HTTP メソッドに応じて、真偽値で返す
      • 例:request.get? => true
    • xhr?, xml_http_request?
      • Ajax 実行されたリクエストかどうかを、真偽値で返す
      • 例:request.xhr? => false
    • url
    • protocol, host, port, path, query_string, host_with_port, port_string
      • url のそれぞれの項目ごとの情報を保持している
      • 例:request.protocol => "http://"
      • 例:request.host => "localhost"
      • 例:request.port => 3000
      • 例:request.path => "/index"
      • 例:request.query_string => "q=hoge"
      • 例:request.host_with_port => "localhost:3000"
      • 例:request.port_string => ":3000"
    • ssl?
      • SSL リクエストならば true となる
      • 例:request.ssl? => false
    • remote_ip
      • HTTP接続元の IP アドレスを保持している
      • 例:request.remote_ip => "127.0.0.1"
    • env
      • HTTP接続元のリクエスト環境を保持している
      • 例:request.env["HTTP_ACCEPT_LANGUAGE"] => "ja,en-US;q=0.8,en;q=0.6"
    • accept, accepts
      • HTTP ヘッダーの Accept の内容を保持している。Accept は、リクエスト元(のブラウザ)が受信可能なデータ形式(MIMEタイプ)をサーバーに伝える役割を果たしている。
      • 例:request.accepts => [text/html, application/xml, */*] (Mime::Type の配列)
    • format
      • Accept から求められた MIMEタイプ を格納している
      • 例:request.format => text/html (Mime:Type)
    • content_type
      • リクエストの MIME タイプ(主に PUT, POST 時に活用される)
    • headers
      • HTTPリクエストのヘッダー式
      • 例:request.headers => {"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/i ... ]}
    • body
      • HTTPリクエストのボディ式
      • 例:request.body => #
    • content_length
      • HTTPリクエストのボディ式のバイト数
      • 例:request.content_length => 0
  • headers
    • レスポンスに使用される HTTP ヘッダーオブジェクト
  • response (レスポンスに使用される HTTP レスポンスオブジェクト)
    • body
      • レスポンスのボディ
      • 例:response.body => ""
    • header
      • レスポンスのヘッダー
      • 例:response.header => {}
    • status
      • レスポンスの HTTP ステータス
      • 例:response.status => 200
    • location
      • リダイレクトがある場合、リダイレクト先の URL が格納される
      • 例:response.location => nil
    • content_type
      • レスポンスの Content Type
    • cache_control
      • レスポンスの Cache Controll
    • etag
      • レスポンスの ETag
    • env
      • 環境値

以上