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

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

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

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

Q&A

1回答

1367閲覧

ユーザーマイページからプロフィールの編集画面へ遷移できません。

kkkt

総合スコア1

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/13 14:56

前提・実現したいこと

*前提として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
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

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

エラー文のそのままの通りです。
NameError 名前エラー
Showing 見てください
_links.html.haml where line #2 raised: _linsk.html.hamlの2行目を
undefined local variable or method 'resource_name' resource_nameが定義されていません。
Did you mean? resolve_asset resolve_assetではないですか?

投稿2020/08/13 22:03

nasuk47

総合スコア311

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問