背景・やりたいこと
Railsでアプリを作成しており、複数のViewで共有して使用するユーザーの情報(画像・ユーザー情報のリンク)をPartialとして作成し、各Viewから呼び出して表示したいと思っています。呼び出し元(view)と呼び出し先(Partial)に以下を書いています。
[show.html.erb]
rails
1<!-- partialの呼び出し --> 2 3<%= render "users/user_panel", user: @challenge.user %>
[_user_panel.html.erb]
rails
1<!-- partialの記載内容 --> 2 3 <%= image_tag user.image.url, :alt => "avatar", :class => "image-round", size: 40 if user.image? %> 4 <span class="userinfo"><%= link_to user.name, user %></span>
困っていること
実際に動かしてみると以下のエラーが発生してpartialが表示されません(呼び出しはされているようですが変数userがうまくわたっていないように見えます)
rails
1<!-- エラー出力 --> 2ActionView::Template::Error (undefined local variable or method `user' for #<#<Class:0x000000000fbc0f20>:0x000000000fbd31c0> 3Did you mean? super): 4 1: 5 2: <%= image_tag user.image.url, :alt => "avatar", :class => "image-round", size: 40 if user.image? %> 6 3: <span class="userinfo"><%= link_to user.name, user %></span>
試したこと
. Webで検索してみると同様の事象が発生した際に多い原因として,
[renderする際に「= render partial: 'パーシャルファイル', locals: { Partialで使用する変数: 呼び出し元のローカル変数 }」と記載するか「= render 'shared/item_header', Partialで使用する変数: 呼び出し元のローカル変数 」と省略化して記載するかのどちらかなのに、半端にpartial:, locals:のどちらかを指定している・・・]
という記事を多く見つけました。念の為 ’render partial: 'パーシャルファイル', locals: {…’ の書き方も試してみましたが、やはり上記と同様のエラーです
コマンドラインで実行してみましたが、引数を設定している箇所のローカル変数@challenge.userについては値のセットは問題なくできているように見えます。
回答1件
あなたの回答
tips
プレビュー