ビューに国名を表示しようとしています。私は、countries に属する country_id を持つ User モデルを持っています。多くの :users を持つ id、iso、name を持つ Country モデルがあります。
これは、Show ビューのコントローラーにあるものです: @user = User.find(params[:id])
この関係のセットアップで、user.countries.name または user.countries.name を実行して国名を取得できると考えました。ただし、ビューまたはユーザーコントローラーの両方で次のエラーが発生します。ユーザー、国、または国を大文字にするかどうかは関係ありません。
失敗/エラー: click_button "変更を保存" ActionView::Template::Error: #<#:0x007fb9548a7ae0> の未定義のローカル変数またはメソッド「ユーザー」
ビューでこれを試してみようと思いました: Country.find(@user.country_id).name
これは、Rails コンソールで期待どおりに機能します。名前が必要な正しい国のID値が表示されています。Railsコンソールでこのコマンドを実行すると、正しい値が得られます。コンソールでは、コントローラーと同様に最初に @user を割り当てました。その後、Country.find コマンドを実行します。ただし、ビューでは、Country.find コマンドで次のエラーが発生します。
失敗/エラー: click_button "変更を保存" ActionView::Template::Error: ID=1 の国が見つかりませんでした
値を表示すると、次のようになります。
#<Country:0x007ffd6bf9ac20>
Country.find コマンドに設定されたインスタンス変数 @country_name を作成すると、同じエラーが発生します。United States のレコードは Country で id = 1 であり、Rails コンソールで見つけることができるため、迷っています。
Stack Overflow を含む Web を確認しました。2 つのモデルからの情報の表示に関する同様の質問が、ここで何度も尋ねられています。私が試した2つのオプションを除いて、彼らは答えられていませんが、うまくいきません。これが機能するようになったら、おそらくこのためのユーザー ヘルパーを作成します。