前提・実現したいこと
*前提としてdeviseを導入してユーザー情報とプロフィールを登録できる様にしていて、それぞれ別テーブルで分られています。
マイページからプロフィール編集画面へ遷移させたいのですが、リンクを踏むとエラーが発生します。
発生している問題・エラーメッセージ
NameError in Profiles#edit Showing /Users/kimototakashinari/projects/fleamarket_sample_80g/app/views/devise/shared/_links.html.haml where line #2 raised: undefined local variable or method `resource_name' for #<#<Class:0x00007fcad49067e8>:0x00007fcad4904ee8> Did you mean? resolve_asset
該当のソースコード
show.html.haml
= render "items/header" .wrapper .Background .Main__Bar .Main__Bar__Container %h2 ここにユーザー名が入る .Main__Bar__Contents %ul.Main__Bar__Tabs %li.Main__Bar__Tabs__Lists 購入した商品 %li.Main__Bar__Tabs__Lists 出品した商品 .Main__Bar__Products %ul.Main__Bar__Product %li.Main__Bar__Product__List 購入した商品一覧 %li.Main__Bar__Product__List 出品した商品一覧 .Side__Bar %nav.Mypage__Nav %ul.Mypage__Nav__Lists %li.Mypage__Nav__List__Container = link_to "ログアウト", user_path(current_user), method: :delete, class: 'Mypage__Nav__List__Container__Item' %li.Mypage__Nav__List__Container = link_to "ユーザー情報変更", edit_user_registration_path(current_user), class: 'Mypage__Nav__List__Item' %li.Mypage__Nav__List__Container = link_to 'プロフィール変更', edit_profile_path(current_user.profile.id), class: 'Mypage__Nav__List__Item' %li.Mypage__Nav__List__Container -# クレジット機能未実装のためリンクを仮置き = link_to 'クレジットカード登録/変更', "#", class: 'Mypage__Nav__List__Item'
users_controller.rb
class UsersController < ApplicationController def show profile = Profile.find(params[:id]) user = User.find(params[:id]) end def edit @user = User.find(current_user) end def update user = User.find(params[:id]) user.update(user_params) sign_in(user, bypass: true) redirect_to user_path(user.id) end def destroy sign_out(current_user) end private def user_params params.require(:user).permit(:email, :password) end end
profile_controller.rb
class ProfilesController < ApplicationController def edit @profile = Profile.find(params[:id]) end def update profile = Profile.find(params[:id]) profile.update(profile_params) sign_in(user, bypass: true) redirect_to user_path(user.id) end private def profile_params params.require(:profile).permit(:first_name, :last_name, :first_name_kana, :last_name_kana, :phone_number, :zip_code, :prefecture, :city, :address, :building) end end
edit.html.haml
= render 'items/header' %h2 個人情報登録 = form_with(model: @profile, local: true) do |f| = render "devise/shared/error_messages", resource: @profile .field = f.label :first_name, "姓" %br = f.text_field :first_name .field = f.label :last_name, "名" %br = f.text_field :last_name .field = f.label :first_name_kana, "姓(カナ)" %br = f.text_field :first_name_kana .field = f.label :last_name_kana, "名(カナ)" %br = f.text_field :last_name_kana .field = f.label :birth_date, "生年月日" %br = f.date_select :birth_date, use_month_numbers: true, start_year: 1950, end_year: (Time.now.year - 10), default: Date.new(1989, 1, 1) .field = f.label :phone_number, "電話番号" %br = f.text_field :phone_number .field = f.label :zip_code, "郵便番号" %br = f.text_field :zip_code .field = f.label :prefecture, "都道府県" %br = f.text_field :prefecture .field = f.label :city, "市町村" %br = f.text_field :city .field = f.label :address, "番地" %br = f.text_field :address .field = f.label :building, "建物名" %br = f.text_field :building .actions = f.submit "SignUp" = render "devise/shared/links"
試したこと
###profiles_controllerに対して
editアクションに、変数として置いていたprofileを、インスタンス変数@profileに変更。
同様に@userも記述してみましたが変わらなかったので削除しています。
上記の通りです、何かしらご教授いただければ幸いです。
補足情報(FW/ツールのバージョンなど)
rails 6_0_3
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。