0

ビューに国名を表示しようとしています。私は、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つのオプションを除いて、彼らは答えられていませんが、うまくいきません。これが機能するようになったら、おそらくこのためのユーザー ヘルパーを作成します。

4

0 に答える 0