【发布时间】:2015-08-27 09:17:07
【问题描述】:
我有一个类别列表。当您单击一个类别时,可以说计算机,在这种情况下,它应该只显示该类别中的项目的标签云计算机。不应显示移动电话类别中的标签。
目前我的标签云显示所有类别的所有标签。
我正在使用 Acts_as_tagable_gem https://github.com/mbleigh/acts-as-taggable-on
如何只显示该类别中的标签?
这是我的看法。 请参考tag_cloud
<p id="notice"><%= notice %></p>
<div class = "col-md-3">
<h1>
<strong><%= @category.name %></strong>
</h1>
</div>
<div class = "col-md-9">
<div id="tag_cloud">
<% tag_cloud(@tags, %w[s m l]) do |tag, css_class| %>
<%= link_to tag.name, tag_path(tag.name, id: @category.id), class: css_class %>
<% end %>
</div>
</div>
<div class = "col-md-12">
<div class="line-separator"></div>
</div>
<div class = "col-md-12">
<div id="items" class="transitions-enabled">
<% @items.each do |item| %>
<div class="box panel panel-default">
<div class="itemlisttitle"><%= item.title %></div>
<%= link_to image_tag(item.image.url (:medium)), item %>
<div class ="panel-body">
<div class = "itemlistprice">$<%= item.price %></div>
<div class = "itemlistretailer"><%= image_tag item.user.avatar(:thumb) %> Retailer: <%= link_to item.user.username, item.user %></div>
</div>
</div>
<% end %>
</div>
</div>
路线请参考最后一行
Rails.application.routes.draw do
resources :categories
get 'password_resets/new'
get 'password_resets/edit'
get 'sessions/new'
resources :users
get 'user_items' => 'users#show_user_items'
root 'items#home'
get 'signup' => 'users#new'
get 'show' => 'users#show'
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :items
get 'items_new' => 'items#new'
get 'tags/:tag', to: 'categories#show', as: :tag
类别控制器显示动作。
def show
@tags = Item.tag_counts_on(:tags)
if params[:tag]
@items = Item.tagged_with(params[:tag])
else
@items = Item.where(category_id: @category.id).order("created_at DESC")
end
end
【问题讨论】:
-
看起来(在您的控制器中)
@tags的定义并不关心@category的设置。也许您需要稍微切换一下show操作逻辑,以便最后设置@tags? -
@MaxWilliams 你好。我发布了答案。你怎么看?你知道更好的方法吗?
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4