rails学習 7日目その3


Railsチュートリアル 第7章

7.1.1 デバッグとRails環境


debug(params)機能を使うとコントローラーのアクションやその他の情報を表示してくれて便利になる。

csccのミックスイン機能

@mixin box_sizing{
  -moz-box-sizing:border-box;
  -webkit-box-sizing: border-box;
  box-sizing:         border-box;
  }

.debug_bump{
  clear:both;
  @include box-sizing
  } 

@mixinで複数の機能をまとめて、それを変数のように扱うことができる。呼び出す時は@includeで呼び出すことで機能が使える

7.1.4 Gravatar画像とサイドバー

Gravatarは無料サービスで、プロフィール写真をアップロードして指定したメールアドレスと関連付けることができる。コードとして使うときはgravatar_forというヘルパーメソッドを使い画像をアドレスと紐付けることができる。

①gravatar_forヘルパーメソッドを作る


image_tagというヘルパーメソッドを使い
image_tag(gravatarのURL,alt:〇〇,class:"gravatar")とかく
これでヘルパーメソッドの定義が終わったので次に実際に使っていく

②ビューにGravatar画像と名前を載せる

使いたいビューに

<%= gravatar_for @user %>
<%= @user.name %>

を貼り付ける(@userを定義している必要あり)
@userが登録したメアドに紐づいている画像がgravatarにあればそれを表示させる。

7.2.1 form_forを使用する

strong Parameters

def create
  @user = User.new(params[:user])
end

params[:user]だけでは悪意のあるユーザーが他に別の情報を送信するかもしれない危険性がある。なのでこちらが許可した値のみを許可するためのコードが必要になる。

def user_params
  params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

このコードを書くことで指定の値だけを許可して通すようになる。この結果コードは以下のようになる

def create
  @user = User.new(user_params)
end

private

def user_params
  params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

privateより下にあるコードは外部からの操作を受けないので安全である

7.3.3 エラーメッセージ

ユーザー登録はできるようになったがもし登録に失敗しても現在では「失敗しました」などのメッセージが何も表示されないので保存が成功したのか失敗したのかユーザー側は判断ができない状態になっている。

なので

保存がされなかった場合はエラーを表示するコードを書く

構造としてはエラーを表示するためのコードなどを_error_messageファイルに書いておき、それをrenderを使ってnew.htmlまで持ってきている。

7.4 ユーザー登録成功

ユーザーの登録失敗の時にエラーを出せるようにしたが、次は登録が成功した時に成功のメッセージが出るようにする。

if @user.save
flash[:success]="Welcome to the Sample App!"
redirect_to @User 

「もしユーザーが保存に成功したら"Welcome to the Sample App!"というフラッシュメッセージを出す」というコードがかけた。
しかしまずflashを定義していないのでflashを呼び出すも何もない。
なのでflashを定義する

<% flash.each do |message_type,message| %>
<div class="alert alert-<%= message_type %>"><%= message %></div%>
<% end %>

これでflashを定義できた。