はじめに
Railsチュートリアルの第7章が終わりました。
ポイントだけメモしておきます。
Railsの環境
Railsにはテスト環境、開発環境、本番環境の3つの環境があります。
それぞれ、test
、development
、production
で表されます。
Rails.env
で参照でき、それぞれの環境名に?をつけると、その環境か確認できます。
# 開発環境の場合
Rails.env #=> development
Rails.env.development? #=> true
Rails.env.test #=> false
scssのミックスイン
cssの複数の記述をひとまとまりにして、使いまわすことができます。
@mixin "ミックスイン名"
と@include ”ミックスイン名”
で記述できます。
@mixin box_sizing {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
debug_dump {
clear: both;
float: left;
width: 100%;
margin-top: 45px;
@include box_sizing; // ここにミックスインの内容が入る
}
リソース
モデルに対応するルートを以下の記述でまとめて定義することができます。
resources :users
以下の内容が追加されます。
HTTPリクエスト | URL | アクション | 名前付きルート |
---|---|---|---|
GET | /users | index | users_path |
GET | /users/1 | show | user_path(user) |
GET | /users/new | new | new_user_path |
POST | /users | create | users_path |
GET | /users/1/edit | edit | edit_user_path(user) |
PATCH | /users/1 | update | user_path(user) |
DELETE | /users/1 | destroy | user_path(user) |
params
コントローラーのshowメソッドなどで、params[:id]
とするとリクエスト時のidが取得できます。
/users/1
の1
の部分です。
def show
@user = User.find(params[:id])
end
strong parameter
createメソッドで、params[:user]
とすることで、フォームから送られてきたモデル情報を取得でき、登録などの処理に使用できます。
しかし、想定外の項目をモデルに含めて送信された場合など、セキュリティ的に良くないことがあるため、項目を制限する必要があります。
以下のように、params.require(:user).permit(”項目のシンボル”)
という内容を返すメソッドを定義しておきます。パラメータを使用する際はこのメソッドを通して取得するようにします。
このpermit
で指定した項目した取得されないようになります。
また、他で使用できないようにprivateメソッドにしておきます。
def create
@user = User.new(user_params)
if @user.save
# 保存の成功をここで扱う。
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
form_for
フォームを作成する際に便利なform_for
という埋め込みRubyがあります。
以下のように記述します。
<%= form_for(@user) do |f| %>
# フォームの内容
<% end %>
上記の中で受け取っている変数f
を使用することで、ラベルやテキスト等を簡単に記述できます。
f."フォーム種類" "カラムのシンボル"
と記載することで、そのカラムに対応するフォームを作成できます。
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :password %>
<%= f.password_field :password %>
f.submit
とすることで、送信ボタンを作成できます。
<%= f.submit "Create my account", class: "btn btn-primary" %>
redirect_to
コントローラーで処理の後に画面遷移をさせたい場合、redirect_to "URL"
と記述します。
@user
と記述すると、user_url(@user)
というURLに自動的に判断してくれます。
redirect_to @user
redirect_to user_url(@user) # 同じ
flash
登録時のメッセージなど、一回だけ表示したい内容を記述する際に、flash
というものを使用します。
flash
は変数にハッシュの形式でデータを格納します。以下のように格納します。
flash[:data] = "hoge"
flash = { data1: "hoge1", data2: "hoge2" }
使用する際は、普通のハッシュのように使用できます。
また、一度参照すると内容はクリアされます。