さまざまな紳士服と婦人服を販売する小さなeコマースサイトを構築しています。ユーザーがどの分類法に基づいているかに基づいて部分的にレンダリングしたいと思います。たとえば、ユーザーがmysite.com/t/women/pantsにいる場合は、_women.html.erbをレンダリングしたいのですが、ユーザーがmysite.com/t/men/shirtsで_men.html.erbをレンダリングしたいと思います。
has_many分類群を持つ分類群モデルと、分類群モデルhas_many製品があります。
taxons_controller.rbに私は持っています:
def show
@taxon = Taxon.find_by_permalink(params[:id])
return unless @taxon
@taxonomy = Spree::Taxonomy.all
@taxon_title = Spree::Taxon.all
@searcher = Spree::Config.searcher_class.new(params.merge(:taxon => @taxon.id))
@searcher.current_user = try_spree_current_user
@searcher.current_currency = current_currency
@products = @searcher.retrieve_products
respond_with(@taxon)
end
そしてtaxons#showで私は持っています:(私は間違っていると知っています)
<% @taxon_title.each do |title| %>
<% @taxonomy.each do |taxonomy| %>
<% if title.name == taxonomy.name %>
<%= render "spree/shared/#{title.name.downcase}" %>
<% end %>
<% end %>
<% end %>
mysite.com/t/women/long-sleeveにアクセスすると、レールデバッガーに次のように表示されます。
controller: spree/taxons
action: show
id: women/long-sleeve
内部のアクションimのIDにアクセスして、コントローラー/ビューで次のようなことができるようにするにはどうすればよいですか。
'idが'women'と等しい場合'render"spree / shared /#{title.name.downcase}"'
タイトルは分類法の名前ですか?
コントローラのshowアクションでfind(params [:something]が必要だと思いますが、paramsについては少しわかりません。
* * *@beck03076それは素晴らしいトリックです。どうもありがとうございます。しかし、それはまだ機能していません。
私のコントローラーに私は入れました:
@taxon_id = Spree :: Taxon.find(params [:id])
それから私が置いた行動で:
@taxon_id == params [:id]の場合、「spree / shared/women」をレンダリングします
そして、ページをロードすると、「探していたページは存在しません」と表示されます。私のパーシャルは正しいディレクトリにあります。私の構文は正しいですか?
私のパラメータは次のとおりです。
{"controller" => "spree / taxons"、 "action" => "show"、 "id" => "women / long-sleeve"}
助けてくれてありがとう!