コントローラ(controller)

コントローラについて

コントローラとは

モデルからデータを受け取り、ビューにレンダリングを行わせる仕組み

特徴

  • コントローラには複数のアクションが含まれている
  • コントローラの名前の付け方には決まりがある
  • 文字コードはUTF-8

規約

  • 英大文字から始まる
  • 英数字のみ
  • 単語の区切りでは、先頭文字を大文字
    EntriesController
    UserCommentsController
  • ファイルはapp/controllerディレクトリに格納
  • ファイル名は、コントローラ名の単語区切りを「_」にし、すべて小文字にしたもの
    app/controllers/entries_controller.rb
    app/controllers/user_comments_controller.rb

雛形

class コントローラ名Controller < ApplicationController
  def メソッド名
  end
edn

パラメータの取得(params)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

URLから送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する

使い方

params[:パラメータ名]

特徴

  • リンクによるパラメータの受け渡し
  • フォームによるパラメータの受け渡し
  • 日本語も自動的にデコードされるので仕様可能
  • 文字コードはUTF-8

リンクによるパラメータの受け渡し
  • ビュー
    link_to 'ユーザ名', :controller => 'users', :action => 'show', :id => 1
  • コントローラ
    def show
      id = params[:id] # id = 1
    end
フォームによるパラメータの受け渡し
  • ビュー
    <% form_for @user do |f| -%>
      名前:<%= f.text_field :name %>
      説明:<%= f.text_area :body %>
    <% end -%>
  • コントローラ
    def create
      name = params[:name]
      body =  params[:body]
    end
配列でパラメータの受け渡し
xxx[]
ハッシュでパラメータの受け渡し
xxx[aaa]

その他

コントローラ名やアクション名の取得

params[:controller]やparams[:action]で、コントローラ名やアクション名を取得できる

ページのレイアウトを設定(layout)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

  • 使用するレイアウトを明示的に指定
  • 指定しない場合は、app/views/layouts/コントローラ名.html.erbを使用
  • app/views/layouts/コントローラ名.html.erbが無い場合は、app/views/layouts/application.html.erbを使用

使い方

layout レイアウト名

基本となる使い方
layout bank_standard
動的にレイアウトを変える
layout :writers_and_readers

private
def writers_and_readers
  logged_in? ? "writer_layout" : "reader_layout"
 end
特定のアクションのみにレイアウトを指定
layout weblog_standard, :only => :rss
特定のアクション以外にレイアウトを指定
layout weblog_standard, :except => :rss

ソースコード検索

レンダリング(render)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

  • 指定したRHTMLを返す
  • 対応しているテンプレートを呼ぶ際は、このメソッドを呼ぶ必要はない

注意点

  • 同じアクション内でrenderメソッドを複数呼び出すと、エラーになるので、and returnを付ける

使い方

render オプション
オプション
オプション説明
:action他のアクションのテンプレートを表示
:partial部分テンプレートを呼び出して表示
:templateテンプレートを指定して表示
:layoutレイアウトを指定
:fileファイルを指定して表示
:text任意のテキストを指定して表示
:xml指定されたテキストを表示し、コンテンツタイプをapplication/xmlに設定
:json指定されたテキストを表示し、コンテンツタイプをtext/x-jsonに設定
:update ブロックで処理を行い表示
:inlineビューとするソースコードを直接指定
:nothing何も表示しない
:statusステータスコードを制御

render :action

説明

他のアクションのテンプレートを表示

使い方
render :action => アクション名
  • レイアウトを指定
    render :action = "アクション名", :layout => レイアウト名
「_new.html.erb」を表示
render :action => "new"
他のレイアウトを使用
render :action => "new", :layout => "user"
レイアウトは使用しない
render :action => "new", :layout => false

render :template

説明

他のコントローラのテンプレートを表示

使い方
render :template = コントローラ名/アクション名
他のコントローラのテンプレートを表示
render :template => "user/show"

render :file

説明

アプリケーション外のテンプレートを表示

使い方
render :file => ファイルパス
「/common/template/index」を表示
render :file => "/common/template/index"

render :text

説明

文字列を直接表示

使い方
render :text => "文字列"
レイアウトを適用
render :text => "文字例", :layout => true
エラーメッセージの表示
render :text => "文字例!, :status => 500
「hello world!」を表示
render :text => "hello world!"
文字列とstatusコード500を返す
render :text => "Explosion!", :status => 500
レイアウトを使用して文字列を表示
render :text => "Hi there!", :layout => true

render :partial

説明

部分テンプレート

使い方
render :partial => "部分テンプレート名"
_page.rhtmnlを使って表示
render :partial => "page"
部分テンプレートを繰り返し表示
render :partial => "user", :collections => @users
部分テンプレートにローカル変数を渡す
render :partial => "user", :locals => { :val1 => xxx, :val2 => xxx }

render :inline

説明

アプリケーション外のテンプレートを表示

使い方
render :inline => テンプレート文字列
現在の時刻を表示
render :inline => "<%= Time.now %>"

render :layout

説明

レイアウトを指定

使い方
render :layout => レイアウト名 [, オプション]
オプション
オプション説明
:only指定されたアクションにだけ、レイアウトを適用
:except指定されたアクション以外にレイアウトを適用
pageのレイアウトを使用
render :layout => 'page'

render :xml

説明

指定されたテキストを表示し、コンテンツタイプをapplication/xmlに設定

使い方
render :xml => モデル or 文字列
pagesテーブルの内容をXML形式で出力
@pages = Page.all
render :xml => @pages

render :json

説明

指定されたテキストを表示し、コンテンツタイプをapplication/xmlに設定

使い方
render :json => モデル or 文字列
pagesテーブルの内容をJSON形式で出力
@pages = Page.all
render :json => @pages

render :nothing

説明

何も出力しない。:statusオプションと組み合わせて、エラーコードを返す時などに使う。

使い方
render :nothing => true
404コードを返す
render :nothing => true, :status => 404

その他

renderを複数使用
説明

renderを複数回呼び出すとエラーになるため、条件分岐した後「and return」で明示的に終了させる。

使い方
render オプション and return

ソースコード

ソースコード検索

リダイレクト(redirect_to)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定されたページにリダイレクト

使い方

redirect_to(リダイレクト先のURL [, :status => ステイタスコード, オプション])

ステータスコード

シンボルコード説明
:ok200成功
:created201リソースの生成に成功
:moved_permanently301リソースが永続的にリダイレクト
:found302リソースが一時的にリダイレクト
:see_other303リソースが別の場所にある
:bad_request400不正なリクエスト
:unauthorized401未承認
:forbidden403アクセス禁止
:not_found404リソースが存在しない
:method_not_allowed405HTMLメソッドが許可されていない
:internal_server_error500内部サーバエラー

オプション

オプション説明
:alert => メッセージエラーメッセージを表示
:notice => メッセージ通知用のメッセージを表示
:flash => {パラメータ => 値}パラメータを使って、一時的に値を保存

現在のコントローラのshowアクションへのリダイレクト
redirect_to :action => "show"
アクションがshowのid=5へリダイレクト
redirect_to :action => "show", :id => 5
同一ホストのファイルへリダイレクト
redirect_to "/images/screenshot.jpg"
URLへリダイレクト
redirect_to "<a href="http://www.rubyonrails.org">http://www.rubyonrails.org</a>"
前のページへリダイレクト
redirect_to :back
statusコード302を返す
redirect_to :action=>'atom', :status => 302

ソースコード

ソースコード検索

画像やファイルのダウンロード(send_file)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定されたパスに存在する画像やファイルを読み込み、その内容をクライアントに送信

使い方

$ send_file(ファイルのパス [, オプション])

オプション

オプション説明デフォルト
:filenameダウンロードするときに使用するファイル名を指定ファイル名
:typeコンテントタイプapplication/octet^stream
:disposition ファイルをインラインで表示するか、ダウンロードして保存するかブラウザに通知attachment
:statusステータスコード200(:ok)
:url_based_filenameContent-Dispositionヘッダ内のファイルのベース名を使わなくするfalse
:length送信されようとしているコンテンツのサイズ
:streamfalseの場合、ファイル全体が読み込まれてから表示
:buffer_sizeストリーミングがtrueの時に、1回に送信されるデータ量
:x_sendfilelighttpdやapacheで利用できるローカルファイル送信用モジュール

指定されたzipファイルをダウンロード
send_file '/path/to.zip'
指定されたPDFをtest.pdfという名前でダウンロード
send_file '/path/test_pdf.pdf', :filename => 'test.pdf'

ソースコード

ソースコード検索

動的に生成されたデータを出力(send_data)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

動的に生成されたデータのダウンロード

使い方

send_data(送るデータ [, オプション])

オプション

オプション説明デフォルト
:filename データを保存するときに使用するファイル名ファイル名
:typeコンテントタイプapplication/octet-stream
:dispositionファイルをインラインで表示するか、ダウンロードして保存するかブラウザに通知attachment
:statusステータスコード200(:ok)

send_data image.data, :type => image.content_type, :disposition => 'inline'

ソースコード

ソースコード検索

アクセスしたユーザの情報を取得(request)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

リクエストを送ってきたユーザのヘッダー情報や環境変数を取得する

使い方

request.メソッド

メソッド

メソッド名説明
request_methodリクエストメソッドを取得
request_method_symbolリクエストメソッドをシンボルで取得
methodHEAD以外は、「request.request_method」と同じ。headはgetを取得
method_symbolメソッドをシンボルで取得
get?GET かどうか
post?POSTかどうか
patch?PATCHかどうか
put?PUTかどうか
delete?DELETEかどうか
head?HEADかどうか
headersリクエストヘッダーの情報取得
original_fullpath
fullpathリクエストURLを取得
original_url
media_typeメディア対応の取得
content_lengthコンテンツサイズを取得
xml_http_request?Ajaxによって実行されたものかどうか
ipIPアドレスを取得
remote_ipremote_ipを取得
uuid
server_software使用しているサーバソフトウェアを取得
raw_post
bodyポストデータを取得
form_data?
body_stream
reset_session
session=(session)
session_options=(options)
authorization認証情報を取得
local?ローカル通信であるか
deep_mungeparamsからnilを削除

リクエストメソッドの取得
request.request_method
リンク先のURLを取得
request.headers[:referer]
すべてのリクエストヘッダを取得
request.headers

ソースコード検索

簡単なメッセージを画面に表示(flash)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

簡単なメッセージを画面に表示

使い方

基本
flash[キー] = 値
現在のアクションのみ有効
flash.now[キー] = 値
有効期限を1リクエスト増やす
flash.keep(キー)
破棄
flash.discard(キー)

特徴

  • 項目追加の成功の有無などユーザへ簡単なメッセージを表示する
  • 「アクション->リダイレクト->アクション」の処理が済むと削除される
  • ブラウザのクッキーを無効にしている場合は使用できない

コントローラ
flash[:notice] = メッセージ
ビュー
<%= h(flash[:notice]) %>

ソースコード検索

フォーマットを変更(respond_to)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

クライアントからの要求に応じて、フォーマットを変更

使い方

respond_to do |format|
  format.出力形式
end

出力形式

出力形式説明
htmlHTML形式
xmlXML形式
jsonJSON形式
rssRSS形式
atomATOM形式
yamlYAML形式
textTEXT形式
jsJS形式
cssCSS形式
cvsCVS形式
icsICS形式

1つのアクションから複数のフォーマットで返す
respond_to do |format|
  format.html
  format.js
  format.xml { render :xml => @people.to_xml }
end
対応するフォーマットを定義
Mime::Type.register "image/jpeg", :jpg
format.jpg  { send_file @page.image_file_name, :type=>:jpg, :disposition=>'inline' }

ソースコード

ソースコード検索

オブジェクトを相互変換

YAML

RubyからYAML
Entry.find(1).to_yaml
YAMLからRuby
yaml = <<-YAML

XML

RubyからXML
Entry.find(1).to_xml
XMLからHash
xml = <<-XML

JSON

RubyからJSON
Entry.find(1).to_json
{:key0 => "value0", :key1 => "value1" }.to_json
JSONからHash
ActiveSupport::JSON.decode('{ "title": "my title", "body": "my body", "id": 1 }')

コントローラ名・アクション名を取得

コントローラ名を取得

使い方
ActionController::Base.controller_name
基本形(オプションなし)
EntriesController.controller_name
# => "entries"
ソースコード検索

コントローラのパスを取得

使い方
ActionController::Base.controller_path
基本形(オプションなし)
EntriesController.controller_path
# => "entries"
ソースコード検索

コントローラのクラス名を取得

使い方
ActionController::Base.controller_name
基本形(オプションなし)
EntriesController.controller_name
# => "EntriesController"
ソースコード検索

Search: Controller.controller_name - GitHub

アクション名を取得

使い方
action_name
ソースコード検索

デフォルトのURLにマッピング(url_options)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

デフォルトのURLにマッピング

使い方

<%= url_options %>

<%= url_options %>
# {:host=>"localhost:3000", :protocol=>"http://", :_path_segments=>{:action=>"index", :controller=>"pages"}, :script_name=>""}

ソースコード

ソースコード検索

アップロードされたファイルを取得(params)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

フォームからアップロードされたファイルを取得

使い方

ファイル名
params[:パラメータ名].original_filename
コンテンツタイプ
params[:パラメータ名].content_type
サイズ
params[:パラメータ名].size
ファイル本体の読み込み
params[:パラメータ名].read

アップロードファイルを取得
params[:file]
ファイル名を取得
params[:file].original_filename
拡張子の取得
params[:file].content_type
ファイルのサイズの取得
params[:file]
ファイル本体の取得
params[:file].read
基本的な使い方
def upload
  file = params[:file]
  name = file.original_filename
  if !['.jpg', '.png', '.gif'].include?(File.extname(name).downcase)
    msg = "JPG, PNG, GIFのみアップロードできます。"
  elsif file.size > 10.megabyte
    meg = "10MBまでアップロードできます。"
  else
    File.open("tmp/#{name}", "wb") {|f|f.write(file.read)}
   meg = "アップロードに成功しました。"
  end
  render :text => mssg
end

ソースコード検索

XML形式のデータをハッシュに変換(from_xml)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

XML形式のデータをハッシュに変換する。

使い方

Hash.from_xml(XMLデータ)

XML形式のデータをハッシュに変換
Hash.from_xml("<langs><lang>Japanese</lang><lang>English</lang></langs>")
# {"langs"=>{"lang"=>["Japanese", "English"]}}

ソースコード

ソースコード検索

空のコンテンツを表示(head)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

応答ステータスとヘッダ情報のみを表示する。

使い方

head ステータスコード [, 応答ヘッダ]

ステータスコード

シンボルコード説明
:ok200成功
:created201リソースの生成に成功
:moved_permanently301リソースが永続的にリダイレクト
:found302リソースが一時的にリダイレクト
:see_other303リソースが別の場所にある
:bad_request400不正なリクエスト
:unauthorized401未承認
:forbidden403アクセス禁止
:not_found404リソースが存在しない
:method_not_allowed405HTMLメソッドが許可されていない
:internal_server_error500内部サーバエラー

404 Not Foundを返す
head :not_found

ソースコード

ソースコード検索

表示結果を文字列として取得(render_to_string)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

表示結果を文字列として取得

使い方

render_to_string :partial => "テンプレート名"

userテンプレートを取得
render_to_string :partial => "user"

ソースコード

ソースコード検索

キャッシュのポリシーを設定(expires_in)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

キャッシュのポリシーを設定する。

使い方

expires_in 有効期限 [, オプション]

オプション

オプション説明
:no-cacheキャッシュを無効化
:no-store返されたデータをキャッシュに記録しない
:max-ageキャッシュの有効性の再確認をせずに、データに保持しておくことができる最大期間
:max-stale有効期限の切れたデータを許可する
:min-fresh最新のデータを取得する
:no-transformメディアタイプを変更しない
:only-if-cachedキャッシュからデータを取得
:cache-extensionトークンを使って拡張
:publicキャッシュされたデータを複数ユーザで共有
:privateキャッシュされたデータを共有しない
:must-revalidateキャッシュの有効期間を必ず問い合わせる
:proxy-revalidateプロキシサーバにキャッシュの有効性を確認
:s-maxage基本的な機能は、max-ageと同じ。ただし、こちらは共有キャッシュにだけ適用される

キャッシュの有効期限を20分
expires_in 20.minutes
キャッシュを共有
expires_in 20.minutes, :public => true

ソースコード

ソースコード検索

キャッシュの無効化(expires_now)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

キャッシュの無効化

使い方

expires_now

キャッシュの無効化
expires_now

ソースコード

ソースコード検索

Atomフィードを生成(atom_feed)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

Atomフィードを生成する。

使い方

atom_feed([オプション]) do |f|
end

オプション

オプション説明デフォルト
:language使用する言語en-US
:root_urlフィードを置き換える文章のURL/
:urlフィードのURL現在のURL
:idフィードのid値tag:#{request.host},#{options[:schema_date]}:#{request.fullpath.split(”.“)}/td>
:schema_dateスキーマ情報今年
:instructXMLのハッシュ

Atomフィードを生成
atom_feed do |f|
  f.title('新着記事フィード')
  f.updated(@pages.last.created_at)
  @pages.each do |p|
    feed.entry(p, :url => p.url,
      :published => p.published,
      :updated => p.updated_at) do |i|
        i.title(p,title)
        i.content("#{@page.published} 公開")
      end
  end
end

ソースコード

ソースコード検索

ログを出力(logger)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

ログファイルなどに出力する

使い方

logger.ログレベル(値)

ログレベル

ログレベル説明
unknown(値)不明なエラー
fatal(値)致命的なエラー
error(値)エラー
warn(値)警告
info(値)通知
debug(値)デバック情報

致命的なエラー
logger.fatal('致命的なエラーです')

ソースコード検索

アクションメソッドを隠す(hide_action)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

アクションメソッドを隠す。

使い方

hide_action アクションメソッド名 [, ...]

newメソッドを隠す
hide_action :new

ソースコード

ソースコード検索

フラッシュタイプの指定(add_flash_types)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

フラッシュタイプの指定

使い方

# in application_controller.rb
class ApplicationController < ActionController::Base
  add_flash_types :タイプ名
end

# controller
redirect_to xxx, タイプ名: "メッセージ"

# view
<%= タイプ名 %>

# in application_controller.rb
class ApplicationController < ActionController::Base
  add_flash_types :warning
end

# controller
redirect_to user_path(@user), warning: "Incomplete profile"

# view
<%= warning %>

ソースコード

ソースコード検索

SSLを強制(force_ssl)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

特定のコントローラをHTTPSリクエストに強制する

使い方

force_ssl([オプション])

オプション

オプション説明
hostRedirect to a different host name
subdomainRedirect to a different subdomain
domainRedirect to a different domain
portRedirect to a non-standard port
pathRedirect to a different path
statusRedirect with a custom status (default is 301 Moved Permanently)
flashSet a flash message when redirecting
alertSet an alert message when redirecting
noticeSet a notice message when redirecting
onlyThe callback should be run only for this action
exceptThe callback should be run for all actions except this action
if symbol naming an instance method or a proc; the callback
unlessA symbol naming an instance method or a proc; the callback

class AccountsController < ApplicationController
  force_ssl if: :ssl_configured?

  def ssl_configured?
    !Rails.env.development?
  end
end

ソースコード

ソースコード検索