LoginSignup
0
0

More than 3 years have passed since last update.

Railsチュートリアル(第7章)

Posted at

はじめに

Railsチュートリアルの第7章が終わりました。
ポイントだけメモしておきます。

Railsの環境

Railsにはテスト環境、開発環境、本番環境の3つの環境があります。
それぞれ、testdevelopmentproductionで表されます。
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/11の部分です。

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" }

使用する際は、普通のハッシュのように使用できます。
また、一度参照すると内容はクリアされます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0