我使用元标签gem - https://github.com/kpumuk/meta-tags
当它只是添加元标签到分类页面,我可以这样做,它的工作:
def show
@page_title = 'x'
@page_description = 'x'
@page_keywords = 'x'
if params[:city_id]
@city = City.friendly.find(params[:city_id])
@category = Category.friendly.find(params[:id])
@suppliers = Supplier.for_city_and_category(@city, @category)
.order_by_rating.includes(:reviews)
@review_count = 0
@suppliers.each { |supplier| @review_count += supplier.reviews.visible.count }
else
@category = Category.friendly.find(params[:id])
@suppliers = @category.suppliers.order_by_rating.includes(:reviews)
@review_count = 0
@suppliers.each { |supplier| @review_count += supplier.reviews.visible.count }
render 'categories/show_all'
end
end
然而,有不同的类别,我想根据类别使用不同的元标签。我试过:
def show
if Category.name == 'Cars'
@page_title = 'x'
@page_description = 'x'
@page_keywords = 'x'
end
if params[:city_id]
@city = City.friendly.find(params[:city_id])
@category = Category.friendly.find(params[:id])
@suppliers = Supplier.for_city_and_category(@city, @category)
.order_by_rating.includes(:reviews)
@review_count = 0
@suppliers.each { |supplier| @review_count += supplier.reviews.visible.count }
else
@category = Category.friendly.find(params[:id])
@suppliers = @category.suppliers.order_by_rating.includes(:reviews)
@review_count = 0
@suppliers.each { |supplier| @review_count += supplier.reviews.visible.count }
render 'categories/show_all'
end
end
…但这是不对的。我不确定如何正确地分配元标签到各个类别....
Show
我想你把你的show
动作搞混了:
def show
if Category.name == 'Cars'
这将永远不会产生您想要的结果,因为类Category
没有实例化状态。只有当你有class
的instance
时,你才能调用.name
方法:
def show
@category = Category.find params[:id]
if @category.name == "cars"
...
end
end
,
元
我会这样做:
#app/controllers/categories_controller.rb
Class CategoriesController < ApplicationController
after_action :set_tags
def show
@category = Category.find params[:id]
@page_title = @category.name
end
private
def set_tags
set_title_tag @page_title
end
end
如果您想根据db
返回的内容手动设置标签,您可以这样做:
#app/controllers/categories_controller.rb
Class CategoriesController < ApplicationController
def show
@category = Category.find params[:id]
case @category
when "car"
@page_title = "x"
when "not car"
@page_title = "y"
end
end
end