心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。8.1.3章。

   


8.1.3サインインのフォーム、です。

ログイン画面を作る

入力フォームをform_forヘルパーを使って作ります。
form_for(@user)と書いた時は、

フォームのactionは/usersというURLへのPOSTであると自動的に判定しますが、セッションの場合はリソースの名前とそれに対応するURLを指定する必要があります。

だそうです。
form_for(:session, url: sessions_path)
お約束ごとなので覚える。

リスト8.7 サインインフォームのコード。
app/views/sessions/new.html.erb

<% provide(:title, "Sign in") %>
<h1>Sign in</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for(:session, url: sessions_path) do |f| %>

      <%= f.label :email %>
      <%= f.text_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.submit "Sign in", class: "btn btn-large btn-primary" %>
    <% end %>

    <p>New user? <%= link_to "Sign up now!", signup_path %></p>
  </div>
</div>

8.1.4確認フォームを送信する、です。

何も入力せず
http://localhost:3000/signin
にアクセスしsigninのデバッグ情報を見ています。
params[:session]の中身が
{ session: { password: “”, email: “” } }であることがわかります。
入力されたemailは、params[:session][:email]と表現でき、
入力されたパスワードは、params[:session][:password]と表現できます。

8.1.5フラッシュメッセージを表示する、です。

フラッシュメッセージ

もっと他のやり方があったような気がしますがRailsTutorialでのフラッシュメッセージはとってもシンプル。

フラッシュメッセージを表示したい場面で
flash[:flashmesssage] = “表示したいメッセージ”とし、

表示したい画面で
<% if flash[:flashmesssage] %>

<%= flash[:flashmesssage] %>

<% end %>
とする。
flash自体がRailsのメソッド。
flash.nowと書くと、現在のアクションのみ有効となる。(renderで別アクションに飛んだときは消える)

8.2、サインイン成功、です。

コントローラーにアクションを書く

viewができたので、newの後、createするアクションを書きます。
リスト8.13 Sessionsコントローラのcreateアクションが完成したところ (まだ動きません)。
app/controllers/sessions_controller.rb

class SessionsController < ApplicationController
略
  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      sign_in user
      redirect_to user
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end

次は、
8.2.1[このアカウント設定を保存する]
です。
Session永続化します。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。 …

RailsTutorial4.0を高速で復習する。8.2.1章。

8.2.1[このアカウント設定を保存する]、です。 RailsTutorial4 …

no image
ブログデザイン変更しました

予告通り、本日中にブログのデザインを変更できました。WordPressのテーマT …

no image
Everyday Rails3章 バリデーションをテストする

さっき、Aaronを削除したらテスト失敗することを確認しましたが、名前入力無しの …

BD再生のオープンソース

メディアはシリコンすら持ちたくない主義なのですが、どうしてもBluelay Di …

Mac miniの液晶モニターにDell U2713HM使っています。

次期モデルが出るかもしれないのにMac miniを買って、自分でメモリを16Gに …

railsでtest unitを生成させない

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

no image
RailsTutorial4.0を高速で復習する。9.3章。

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …

パーフェクトRuby 2章Rubyの基礎 2-1 Hello,Ruby

12章から5章まではPart2 Ruby言語仕様 です。 2章 Rubyの基礎 …

no image
浅田真央ちゃんは今シーズンが最後!テレビチューナーにHDつけて録画する!

テレビ見なくなってはや10年以上。ただし、 *真央ちゃんを除く*です。 土曜日に …