0

さまざまな紳士服と婦人服を販売する小さな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"}

助けてくれてありがとう!

4

1 に答える 1

1

パラメータについて不明な点がある場合は、アクションに以下の行を追加してアクションを実行してください。

p "****************************"
p params
p "****************************"

次に、サーバーを起動したターミナルに移動します。

これらの 2 つの " * ** * ** * " を見つけ、その間にあるものはすべてパラメーターです。

params は基本的に Ruby ハッシュです。

例:

パラメータは次のようになります。 {:controller => "hello",:action => "bye", :id => 7, :others => "OK"}

コントローラーで ID にアクセスするには、params[:id].(=7) を使用します。

その他にアクセスするには、params[:others].(="OK") を使用します。

于 2013-03-11T22:06:02.663 に答える