心はいつも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

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

  関連記事

iPhoneアプリ開発のお勉強方法です。

Objective-C苦節3ヶ月アプリ作れるようになったと書きましたが、本日アプ …

WordPressのテンプレートを自分で作ってみました

ブログ更新は久々になりました。この2週間、ずっとこのブログ用にWordPress …

no image
RubyとRailsのお作法

コーディングスタイルって結構気になります。 最初につとめた会社で、プログラミング …

no image
Mavericksでruby2.0 rails4.0.0のGem

MacBookAirにMavericksインストールして初めてのrails ne …

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

11.2.3「フォローしているユーザー」ページと「フォロワー」ページ、です。 仕 …

herokuのWe’re sorry, but something went wrong.に苦しんだ

Rails3.2環境に戻してアプリを作ろうとしています。 herokuにpush …

no image
RailsTutorial4.0を高速で復習する。終わりました。

作りたいサービスがあってコーディング開始していたのですが、もう1回振り返り学習し …

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

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

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

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

no image
Ruby 1.9系をインストールする

Rubyのバージョン管理ができるrbenvをインストールしたらいよいよRubyの …