前提・実現したいこと
ユーザーの身体情報を保存しているidealweightモデルにおいてidealweights/showページへ遷移しようとするとNomethoderrorが起きてしまいます。
なおこのidealweightモデルはUserモデルと1:1の関係を持っています。
idealweightモデルに入っている情報を閲覧・修正・削除をできるようにしたいのですが、
Showページに遷移させようとするとNomethoderrorが起きている状況です。
発生している問題・エラーメッセージ
内容を確認してみるとidealweightにおいてid=14がないと言っているようです。
この14という数字はユーザーのIDでして、本来idealweightでは10が正しい数値です。
実際コントローラーのshowの箇所を
#エラーがでる def show @idealweight = Idealweight.find(params[:id]) end #正しく表示される def show @idealweight = Idealweight.find(10) end
とすればエラーが出ずページが遷移されます。
#エラーが出る(この14というのはUserIDがなぜか反映している) ~/idealweights/14 #うまく遷移する ~/idealweights/10
ちなみにページを遷移する際はrails routesで確認した
<%= link_to "showページへ繊維", idealweight_path, class: "dropdown-item" %>
から遷移させています。
なぜ上記を押下するとUserIDがそのまま残ってしまうのかわからないのですが…
エラー解消方法などご存知でしたらご教示いただけますと幸いです。
該当しそうなコードも下記に添付しておきます。
該当のソースコード
##user.rb class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable acts_as_paranoid has_one :idealweight, dependent: :destroy #ユーザーに対し1つしか作成されないためhas_oneを使用 end
##idealweight.rb class Idealweight < ApplicationRecord belongs_to :user end
##idealweights_controller class IdealweightsController < ApplicationController def new #(ここは問題ない) @idealweight = Idealweight.new end def create #(ここは問題ない) @idealweight = Idealweight.create(idealweight_params) redirect_to controller: :advicediaries, action: :content end def show @idealweight = Idealweight.find(params[:id]) end private def idealweight_params #(ここは問題ない) params.require(:idealweight).permit(:height, :weight, :targetweight, :exerciselevel, :period, :basemetabolism, :kcalburned, :minusweight, :minuskcal, :kcalintake, :intakeproteingram, :intakeproteinkcal, :intakefatgram, :intakefatkcal, :intakecarbogram, :intakecarbokcal, :start_day, :last_day, :user_id) end end
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.3
ruby 2.5.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/11 04:16