0

テーブル列「グループ」が「女性」に設定されている製品ページでパーシャルをレンダリングしようとしています。

products_controller.rb には次のものがあります。

@subnav = Spree::Product.find(params[:group])

次に、products#show に次のものがあります。

<div class="subnav">
 <%= render "spree/shared/#{@subnav}_subnav" %>
</div><!--subnav -->

したがって、製品に「女性」グループがある場合、「spree/shared/women_subnav」をレンダリングする必要があります。しかし、代わりに「ActionView::MissingTemplate in Spree/products#show」というエラーが表示されます。

 "Missing partial spree/shared/_subnav with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :rabl], :versions=>[:v1]}.

そのため、何らかの理由で変数の存在さえ認識していません。

私も試してみました

 @subnav = params[:group]

 @subnav = Product.find(params[:group]

ご協力いただきありがとうございます!

4

2 に答える 2

0

コメントによると、URL内のサーバーにグループパラメーターを渡していません。

 @subnav = Spree::Product.find(params[:group]) 

ここで @subnav は nil になり、文字列補間は "#{@subnav}" を空の文字列に置き換えます。

また、@subnav は文字列ではなく ActiveRecord のインスタンスになるため、文字列を返す必要な属性を呼び出す必要があります (この場合は「女性」)。

nil 値を処理するパーシャルをレンダリングする前に @subnav の値をチェックするもう 1 つの注意事項

お気に入り

<% unless @subnav.nil? %>
<div class="subnav">
 <%= render "spree/shared/#{@subnav.name}_subnav" %>
</div><!--subnav -->
<% end %>

名前が「女性」の値を保持するための ActiveRecord インスタンスの属性であると仮定します

于 2013-04-02T16:50:47.923 に答える