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

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

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

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

4401閲覧

NoMethodError in SessionsController#createに関して

s.k

総合スコア423

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/09/17 02:45

編集2016/09/17 04:23

こんにちは。
ログイン情報記録機能に関して理解できない点がありますので、質問させていただきます。

【やりたいこと】
login画面のRemember(アカウント設定の保存)機能を実装すること

【やったこと】
・user.rb・sessions_helper.rb・sessions_controllerに関連するコードを書きました。
詳細は下に記します。

【エラー】
ブラウザでRememberボタンを押すとエラーが表示されます。

そして表示されるエラーは以下です。

ターミナルで表示されるエラーは以下です。

NoMethodError (undefined method ` remember' for #<SessionsController:0x0000000925a428> Did you mean? remember): app/controllers/sessions_controller.rb:9:in `create' Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_source.erb (5.8ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_trace.html.erb (2.6ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_request_and_response.html.erb (1.3ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/_web_console.html.erb (1.0ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates/rescues/diagnostics.html.erb within rescues/layout (123.1ms)

【session_controller】
下の※のコードにあるrememberが未定義とのエラー内容ですが、
他ファイルできちんと定義しています...

class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) log_in user ** params[:session][:remember_me]=='1'?remember(user):forget(user)** redirect_to user else flash.now[:danger]='Invalid email/password combination' render 'new' end end def destroy log_out if logged_in? redirect_to root_url end end

【session_helper.rb】

def remember(user) user.remember cookies.permanent.signed[:user_id] = user.id cookies.permanent[:remember_token] = user.remember_token end

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラー文は読んでいますか? undefined method ` remember' は「remember なんてメソッドはありません。」と書いています。

Rubyはよくわかりませんが、s.kさんの別の質問に書いてあるuserの定義と変わらないのであれば remember(user) ではなく user.remember では?

投稿2016/09/17 03:03

kei344

総合スコア69398

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

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

s.k

2016/09/17 03:23

keiさん ありがとうございます! エラー文読んでおります! user.rememberためしてみましたが、できませんでした... railsのチュートリアルと同じコードなので原因がわからないという状況でございます。 いろいろ試してはみたのですが…
kei344

2016/09/17 03:58

それは失礼しました。 Rubyを触ったことが無いため適切なアドバイスが出来ず申し訳ないのですが、teratailのようなQ&Aサイトの使い方について1点アドバイスがあります。 「できませんでした」という返答は「エラーが出ました」と同じように情報0です。何をしてどういうエラーが出たか、想定していた挙動とどう違ったかを書かないと回答者には伝わりません。(←えらそうに書いておいて詳しく書かれても多分私にはわからないのですみません) --- 下記のようなものがあるので、ソースを見比べてみてはいかがでしょうか。 【GitHub - yasslab/sample_apps: Railsチュートリアルの各章が終わった状態を集めたリポジトリです。】 https://github.com/yasslab/sample_apps
s.k

2016/09/17 04:05

keiさん ご指摘ありがとうございます。 想定していた挙動とどう違ったかを書かないと回答者には伝わりません。 ここ足りてないですね。。。 エラーに夢中で回答者へ対する配慮が欠けていました。 自分でも質問文を読んでみましたが、これでは伝わりませんね( ;∀;) 書き直します! 資料ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問