0
ヘルプpls。どのように私はこのエラーを持っているのか分かりません。私はユーザーのプロファイルを作成しようとしています。このエラーはプロファイルの作成アクションから発生したようです。それは私にはOKに見えますが、明らかにそれはProfilesControllerのNoMethodError#create
ではありません作成しようとしている時にエラーは言う:
undefined method `build_profile' for #<Profile:0x5ffcca0>
app/controllers/profiles_controller.rb:27:in `create'
プロフィールコントローラ:
class ProfilesController < ApplicationController
before_action :authenticate_user!
before_action :set_profile, only: [:show, :edit, :update, :destroy]
def index
@profiles = Profile.all
end
def edit
@profile = Profile.find(params[:id])
end
def show
@profile = Profile.find(params[:id])
end
def new
@profile = Profile.new
@profile.first_name = current_user.first_name
@profile.last_name = current_user.last_name
@profile.account_type = current_user.account_type
@profile.email = current_user.email
end
def create
@profile = Profile.new(profile_params)
if @profile.save
redirect_to root_path
else
render 'new'
end
end
def update
@profile = Profile.find(params[:id])
if @profile.update(profile_params())
flash[:sucess] = "Sucessfully updated"
redirect_to profile_path(@profile.id)
else
flash[:error] = "Error" # Optional
render "profiles/edit"
end
end
def destroy
@profile = Profile.find(params[:id])
@profile.destroy!
redirect_to "/profiles/show"
end
# Never trust parameters from the scary internet, only allow the white list through.
def profile_params
params.require(:profile).permit!
end
end
プロファイルモデル:
class Profile < ActiveRecord::Base
belongs_to :user
before_create :build_profile
end
スキーマのプロフィール
create_table "profiles", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "username"
t.string "gender"
t.date "birthday"
t.string "email"
t.string "account_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "handedness"
t.string "coach"
t.date "date_joined"
t.integer "year"
t.string "course"
t.string "main_weapon"
t.string "additional_weapon"
t.integer "cellphone_number"
t.integer "emergency_contact"
t.string "contact_name"
t.string "contact_rel"
t.string "player_status"
t.integer "user_id"
end
定義を提供してください。 'profile_params'のうちの一つです。 –
エラーメッセージ、フルコントローラファイル、profile.rb、および移行ファイルを表示します。 – hashrocket
は編集しました – Kevin