0
0

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チュートリアル第七章 flash

Posted at

###flash
ユーザー登録フォームが実際に動くようになった。
それにより登録することができるよになった。
登録完了後に表示されるメッセージを二度目以降に表示させないようにさせる。
それを使うには
flashという変数を使う。 ハッシュのように使う。
####ユーザー登録ページにフラッシュメッセージを追加する
app/controllers/users_controller.rb

class UsersController < ApplicationController
.
.
.
  def create
    @user = User.new(user_params)
    # 外部メソッドを使う
    if @user.save
      # 保存の成功をここで扱う。
      flash[:success] = "Welcome to the Sample App!"
      # 成功時一度だけ表示されるメッセージ
      redirect_to @user
      # urlを指定して表示する
      # 保存成功したらurlを表示する
    else
      render 'new'
      # 保存に成功しなければnewアクションに移動する
      # 失敗したらまた戻る
    end
  end
  
  private
  #外部から使えないようにする
  
    def user_params
    # Usersコントローラの内部でのみ実行される
    # Web経由で外部ユーザーにさらされない
       params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end
end
>> flash = {success: "It worked!", dager: "It failed." }
# ハッシュを作った。
=> {:success=>"It worked!", :dager=>"It failed."}
>> flash.each do |key, value|
# each文を作成 繰り返し
?>   puts "#{key}"
>>   puts "#{value}"
>> end
success
It worked!
dager
It failed.

:successキーのメッセージが表示される場合、適用されるCSSクラスは次のようになります。

alert-success

####flash変数の内容をWebサイトのレイアウトに追加する
app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= render 'layouts/rails_default' %>
    <%= render 'layouts/shim' %>
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <% flash.each do |message_type, message| %>
        <div class="alert alert-<%= message_type %>"><%= message %></div>
        <!--これがデータ送信成功時メッセージのためのHTML-->
        <!--message_typeにsuccess代入, message 成功時メッセージに代入-->
      <% end %>
      <%= yield %>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
      <!--デバッグ情報はRailsの3つのデフォルト環境のうち、開発環境(development)だけで表示されるようになります-->
    </div>
  </body>
</html>

###演習
1.コンソールに移り、文字列内の式展開(4.2.1)でシンボルを呼び出してみましょう。例えば"#{:success}"といったコードを実行すると、どんな値が返ってきますか? 確認してみてください。

>> "#{:success}"
=> "success"

2.先ほどの演習で試した結果を参考に、リスト 7.28のflashはどのような結果になるか考えてみてください。

>> flash
=> {:success=>"It worked!", :dager=>"It failed."}
#ハッシュのキーとバリュー
>> "#{flash[:success]}"
#ハッシュのキーでバリューを呼び出す
=> "It worked!"
>> "#{flash[:dager]}"
=> "It failed."
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?