ぞえの技術めも

Ruby on Rails勉強中

【63日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録フォームを完成させる

Ruby on Railsチュートリアル(第3版)

今日は「7.4 ユーザー登録成功」から。

7.4 ユーザー登録成功

まずは、ユーザーを保存できるようにします。保存に成功すると、ユーザー情報は自動的にデータベースに登録されます。
次にブラウザの表示をリダイレクトして、登録されたユーザーのプロファイルを表示します。

この項でユーザー登録フォームは完成、かな。

7.4.1 登録フォームの完成

現状では、有効な情報で送信するとエラーが発生してしまいます。

メールアドレスやパスワードなど有効なユーザー情報を入力してボタンをクリック。
エラー画面が表示されました。

f:id:kt_zoe:20161101123712p:plain

users/createのテンプレートないよ、って言われました。
createアクションにビューはないですね。。。

ユーザー登録に成功した場合は、ページを描画するのではなく別のページにリダイレクトするようにしてみましょう。
ルートURLにリダイレクトしてもよいですが、一般的な慣習にしたがって、新しく作成されたユーザーのプロフィールページにリダイレクトしてみます。

ユーザー登録に成功したとき(if @user.save)にユーザーのプロフィールページにリダイレクトするショルを追加。

app/controllers/users_controller.rb

    :
  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to @user
    else
    :

redirect_to @userredirect_to user_url(@user) と等価だそう。

redirect_to @userというコードからuser_url(@user)といったコードを実行したいことを(自動的に)推察してくれた結果になります。

便利なのでそういうもの、って覚えておくか。。。

7.4.2 flash

登録完了後に表示されるページにメッセージを表示し (この場合は新規ユーザーへのウェルカムメッセージ)、2度目以降にはそのページにメッセージを表示しないようにするというものです。 Railsでこういった情報を表示するためには、flashという特殊な変数を使います。

変数が用意されてる?のはいいですね。自分でフラグ用意したりしなくていいんだ。。。。

さっき追加したリダイレクトの処理の前にコードを追加。

app/controllers/users_controller.rb

      flash[:success] = "Welcome to the Sample App!"

Bootstrap CSSは、このようなflashのクラス用に4つのスタイルを持っています (success、info、warning、danger)。

flashはタイプに応じて使い分けができるのかー。

flash変数の内容をWebサイト全体で表示できるように、アプリケーション共通のViewに下記を追加。

app/views/layouts/application.html.erb

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

これでユーザー登録後のメッセージもOKなはず。

今日の作業時間は【24分】

次は「7.4.3 実際のユーザー登録」から。