心はいつも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
RailsとRubyのインストール済みバージョン確認し、Rails3.2+Ruby1.9に戻してみる。

Rails3.2で作る必要があったので、Rails4はいったんおいといてRail …

パーフェクトRuby 1章Rubyの概要

メタプログラミングRubyもいいのですが、余計な物語仕立てがどうも性に合わず、消 …

詳解 Objective-C 2.0 第3版 CHAPTER4 オブジェクトの型と動的結合

CHAPTER4は「オブジェクトの型と動的結合」なんだけど、 動的結合ってなに? …

画面キャプチャ系extension

現在メインブラウザはchromeを利用しています。画面キャプチャextensio …

パーフェクトRuby 2章Rubyの基礎 2-7-3 シンボル

p61 2-7-3 シンボル シンボル好きです。Ruby始めた頃の一番最初の疑問 …

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

5.3.4RSpecを洗練させる、です。 確かに、名前付きルートに書き換えていて …

使ったらダメなiPhoneケーブル

iPhoneのApple純正ケーブルって、はげやすくないですか?iPhone5用 …

Google Webfont使ってみたよ

地元に戻ってきてまず思ったのは「観光サイトを立ち上げたい」ということ。いや、観光 …

railsでtest unitを生成させない

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

SublimeText2をMacにインストールしてターミナルから起動できるようにする。

Windowsには秀丸っていう超優秀なテクストエディタがあって、無料でも使えるの …