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

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

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

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

Q&A

1回答

1543閲覧

レイルズのNoMethodError について

rura

総合スコア70

Ruby on Rails 4

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

0グッド

0クリップ

投稿2018/02/03 13:34

前提・実現したいこと

ご閲覧ありがとうございます。
レイルズ初心者です。
会員登録機能を作成中ですが、
下記のエラーが出まして、
どうしてもバグ取りがよくわからず、
きました。

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

Users/new.erb.html のアカウント登録確認ボタンを押すと下記のエラーが出力される

NoMethodError in UsersController#create
undefined method `area' for #User:0x007fb95fc85f58
Extracted source (around line #32):

def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else

Rails.root: /home/ubuntu/workspace/kamsuki

Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:32:in `create'
Request
Parameters:

{"utf8"=>"✓",
"authenticity_token"=>"YjSiXk5kI6QQtALhuvD4+NXfFejDpa54MkAStjJJM/RSM8tdjKvkFER+WjawTJFTjz9p1zOEGriOaGAk8Afv0Q==",
"user"=>{"name"=>"",
"email"=>"",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"},
"commit"=>"アカウント登録確認"}
Toggle session dump
Toggle env dump
Response
Headers:

None

<h1>Sign up</h1> <h2>ご登録したいアカウントをご記入とご確認の上でアカウント登録確認を押して下さい</h2> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@user) do |f| %> #省略 <%= f.password_field :password_confirmation, class: 'form-control' %> <%= f.submit "アカウント登録確認", class: "btn btn-primary" %> <% end %> </div> </div>

該当のソースコード

users_controller.rb

class UsersController < ApplicationController def new @user = User.new end def show @user = User.find(params[:id]) @microposts = @user.microposts.order(created_at: :desc) end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update(user_params) # 保存に成功した場合はトップページへリダイレクト redirect_to root_path flash[:success] = "プロフィールを更新しました" else # 保存に失敗した場合は編集画面へ戻す render 'edit' end end def create @user = User.new(user_params) if @user.save flash[:success] = "Welcome to the Sample App!" redirect_to @user else render 'new' end end before_action :correct_user, only: [:edit, :update] def followings @user = User.find(params[:id]) @followings = @user.following_users end def followers @user = User.find(params[:id]) @followers = @user.follower_users end private def user_params params.require(:user).permit(:name, :email, :password,:password_confirmation,:area) end def correct_user @user = User.find(params[:id]) redirect_to(root_path) unless @user == current_user end end

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

すみません、推測ですが、Userモデルに areaというカラムは存在するのでしょうか。
モデルの情報がわかれば教えてください。

投稿2018/02/03 14:29

Yuinyan

総合スコア312

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

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

rura

2018/02/03 15:11

ご回答ありがとうございます。 現在のUserテーブルの情報です。 create_table "users", force: :cascade do |t| t.string "name" t.string "email" t.string "password_digest" t.string "isting" t.date "Establishment" t.integer "zipcode" t.string "dwelling" t.string "BuildName" t.integer "TelNam" t.string "UserAttribut" t.datetime "DateTime" t.datetime "created_at", null: false t.datetime "updated_at", null: false end areaという値は今のところ、つける気はないです。
Yuinyan

2018/02/03 15:33

そうなんですね。 それであれば、strong_parameterのareaを削除しないといけないですね。 def user_params params.require(:user).permit(:name, :email, :password,:password_confirmation,:area) end ここのareaを削除してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問