Ruby on Rails5速習実践ガイド chapter6
6-2-1 「ルート」を構成する5つの要素
ルーティングとはリクエストをどのアクションで実行するかを指定するもの。ルーティングを構成するのに必要な物は以下である
| 要素の名前 | 要素の内容の例 | 説明 |
|---|---|---|
| HTTPメソッド | GET,POST,PATCH,PUT,DELETE | 情報の送信、取得の方法を表す物 |
| URLパターン | /tasks、/tasks/:idなど | URLそのもの |
| URLパターンの名前 | new_task、tasksなど | 定義したURLパターンごとに一意な名前をつけたもの |
| コントローラー | tasks(Taskcontroller) | 呼びたいアクションのコントローラークラスを指定する |
| アクション | index | 呼びたいアクションを指定する |
6-2-5 resourcesでCRUDのルート一式を定義する
前の説明でresourcesについて説明した今回はそれの応用編である。
resouces :tasks
このように記述するとtaskルーティングの7つのHTTPメソッドが自動的に1つにまとまる。ということを書いた。それではそれ以外のルーティングを書きたいときはどうすれば良いのか?プラスで付け加えたい時はcollectionを使う
resouces :tasks do
collection do
get 'export'
end
end
このようにcollectionのなかにHTTPメソッドとアクション名を書くことで自動的にルーティングが機能するようになる。
6-3 国際化
ja.ymlファイルなんかによりプログラミングでも日本語対応させてコードを書くことが可能である。利用者もまた日本語に対応したサービスにはなるが外国のかたが使う機会があるかもしれない。利用者によって言語を変える必要も出てくる。そんな時に使うのがI18n.localeである。I18nは一つのプログラムで複数の国向けに使えるようにするものである。
class ApplicationController < ActionController::Base
before_action :set_locale
private
def set_locate
I18n.locale = current_user&.locale || :ja #ログインしていなければ日本語
end
end
コントローラに定義することで使えるようになる
6-6 Railsのログ
ログとは自分が何か処理をしたときの履歴である。もしエラーやバグがあればログを遡り何の操作が正しくなかったかなどをみることができる。
例えばタスク作成時に保存したタスクの情報をログ出力させたい時は、以下のようにする。
def create
if @task.save
logger.debug "task: #{@task.attributes.inspect}"
redirect_to @task, notice: "タスク「#{@task.name}」を登録しました"
else
inspectはわかりやすく表示してくれるもの。
ただログに残ってはいけない個人情報なんかもある、その時にはログに映らないようにしなければならない。
Rails.application.config.filter_parameter +=[:password]
ここで指定されたパラメータの値は、ログ上では[FILTERED]と表示される。