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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

8625閲覧

Railsで発生した「undefined local variable or method」エラーが直りません

tktk2580

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/03/06 06:02

前提・実現したいこと

Railsチュートリアル7章(リスト7.23)よりrails testを実行するとerrorが発生しました。
(リスト7.23)実行前はerrorは発生していませんでした。
Rails初心者です。

発生している問題・エラーメッセージ

Ruby

1 2Cloud9User:~/environment/sample (sign-up) $ rails t 3Running via Spring preloader in process 10895 4Started with run options --seed 18671 5 6ERROR["test_invalid_signup_information", UsersSignupTest, 0.4355455940003594] 7 test_invalid_signup_information#UsersSignupTest (0.44s) 8NameError: NameError: undefined local variable or method `user_params' for #<UsersController:0x000000000646ad10> 9 Did you mean? user_path 10 app/controllers/users_controller.rb:12:in `create' 11 test/integration/users_signup_test.rb:8:in `block (2 levels) in <class:UsersSignupTest>' 12 test/integration/users_signup_test.rb:7:in `block in <class:UsersSignupTest>' 13 14 19/19: [================] 100% Time: 00:00:00, Time: 00:00:00 15 16Finished in 0.51708s 1719 tests, 37 assertions, 0 failures, 1 errors, 0 skips 18

該当のソースコード

リスト(7.23)にて変更後の内容(test/integration/users_signup_test.rb)red

ruby

1 2require 'test_helper' 3 4class UsersSignupTest < ActionDispatch::IntegrationTest 5 6 test "invalid signup information" do 7 get signup_path 8 assert_no_difference 'User.count' do 9 post users_path, params: { user: { name: "", 10 email: "user@invalid", 11 password: "foo", 12 password_confirmation: "bar" } } 13 end 14 assert_template 'users/new' 15 end 16end

変更前の内容(test/integration/users_signup_test.rb)green

ruby

1require 'test_helper' 2 3class UsersSignupTest < ActionDispatch::IntegrationTest 4 # test "the truth" do 5 # assert true 6 # end 7end

試したこと

errorに書かれている
app/controllers/users_controller.rb:12:in `create'

をみましたが今の知識では解決できませんでした。

ruby

1class UsersController < ApplicationController 2 def show 3 @user = User.find(params[:id]) 4 5 end 6 7 def new 8 @user = User.new 9 end 10 11 def create 12 @user = User.new(user_params) 13 if @user.save 14 # 保存の成功をここで扱う。 15 else 16 render 'new' 17 end 18 19 private 20 21 def user_params 22 params.require(:user).permit(:name, :email, :password, 23 :password_confirmation) 24 end 25 end 26end

補足情報(FW/ツールのバージョンなど)

基本的なミスかもしれませんが、解決できず進めません。
ご協力よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

https://stackoverflow.com/questions/23717857/undefined-local-variable-or-method-user-params-rails-4

こちらに同じことを言ってる人がいました。

def create に対応する end の位置が間違っているように見えます。

def create @user = User.new(user_params) if @user.save # 保存の成功をここで扱う。 else render 'new' end end # <ー これがないのでは private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end

投稿2020/03/06 06:12

tetsunosuke

総合スコア1295

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

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

tktk2580

2020/03/06 06:39

早速ご回答ありがとうございます。 解決しました。 やはり、基本的なミスでしたね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問