質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

1026閲覧

undefined method `login'のエラーを解決できません!

lilywhite

総合スコア42

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/10/10 02:43

Sorceryを利用しユーザー機能を作成しています。
しかし、「ログイン」しようとすると下記のようなエラーが発生します。

NoMethodError in UserSessionsController#create
undefined method `login' for #UserSessionsController:0x00007f9b7d9a6d78 Did you mean? login_url

"login"メソッドが見つからない、というメッセージだと思います。
このエラーメッセージを解消するためにはloginメソッドを定義する必要があると思いますがどのように記述すればいいのでしょうか?
また、別の対策法があるようでしたら教えていただきたいです。

エラーが発生している部分のコード

ruby

1class UserSessionsController < ApplicationController 2 skip_before_action :require_login, only: [:new, :create] 3 def new 4 @user = User.new 5 end 6 7 def create 8 if @user = login(params[:email], params[:password]) 9 redirect_back_or_to(:users, notice: 'Login successful') 10 else 11 flash.now[:alert] = 'Login failed' 12 render action: 'new' 13 end 14 end 15 16 def destroy 17 logout 18 redirect_to(:users, notice: 'Logged out!') 19 end 20end 21

ログインフォーム

html

1<%= form_tag user_sessions_path, :method => :post do %> 2 <div class="field"> 3 <%= label_tag :email %><br /> 4 <%= text_field_tag :email %> 5 </div> 6 <div class="field"> 7 <%= label_tag :password %><br /> 8 <%= password_field_tag :password %> 9 </div> 10 <div class="actions"> 11 <%= submit_tag "Login" %> 12 </div> 13<% end %>

ユーザーモデル

ruby

1class User < ApplicationRecord 2 authenticates_with_sorcery! 3 4 validates :password, length: { minimum: 3 }, if: -> { new_record? || changes[:crypted_password] } 5 validates :password, confirmation: true, if: -> { new_record? || changes[:crypted_password] } 6 validates :password_confirmation, presence: true, if: -> { new_record? || changes[:crypted_password] } 7 8 validates :email, uniqueness: true 9end

バージョンについて

ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Rails 5.2.1

なぜ用意されているはずの"login"メソッドが見つからないのか分からないので、原因とエラーを解決し正しくログインする方法を知りたいです。お願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問