4.6 その他
リダイレクトする
リダイレクトさせるにはredirect_to
メソッドを利用します。
特定のリンクにリダイレクトする
redirect_to
メソッドにパスまたはURLを渡して上げることでリダイレクトできます。
redirect_to root_path # /にリダイレクトされる
redirect_to "https://www.google.com" # Googleのホームページにリダイレクトされる
前のページにリダイレクトする
redirect_back
メソッドを使うことで一つ前のページにリダイレクトすることができます。
redirect_back(fallback_location: root_path)
fallback_location
はリダイレクト先がない場合にリダイレクトする場所を指定することができます。上の例の場合、ページが戻れないときはroot_path
にリダイレクトされることになります。
エラー処理をする
エラーを捕捉するにはrescue_from
メソッドを使います。引数に補足する例外と補足時に実行する処理を指定します。
以下の例ではException
例外が発生したときhandle_internal_server_error
メソッドが呼ばれます。
class ApplicationController < ActionController::Base
rescue_from Exception, with: :handle_internal_server_error
private
def handle_internal_server_error
flash[:error] = '内部エラーが発生しました'
redirect_to root_path
end
end
Basic認証を設定する
Basic認証をかけるにはauthenticate_or_request_with_http_basic
メソッドを使います。このメソッドはクライアントから受け取ったユーザー名とパスワードが
ブロックの変数として渡ってくるので、それを利用して設定した値と照合します。true
が返ると認証に成功します。
class ApplicationController < ActionController::Base
before_action :basic_authentication
private
def basic_authentication
authenticate_or_request_with_http_basic do |username, password|
username == 'admin' && password == '123456789' # ユーザー名はadmin, パスワードは123456789
end
end
end