0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rails学習 7日目その3

Posted at

#Railsチュートリアル 第7章

##7.1.1 デバッグとRails環境

IMG_0560.JPG
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ヘルパーメソッドを作る

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

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

使いたいビューに

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

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

##7.2.1 form_forを使用する

IMG_0564.JPG

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 エラーメッセージ

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

なのでIMG_0566.JPG
IMG_0568.JPG

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

構造としてはエラーを表示するためのコードなどを_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を定義できた。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?