2014-07-05 21 views
1

我使用元標籤的寶石創建不同的標籤 - 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 

......但它是不正確的。我不知道如何正確地分配元標籤到各個類別....

回答

0

顯示

我覺得你有你的show措施混淆:

def show 

    if Category.name == 'Cars' 

這將永遠產生你想要的結果,因爲類Category沒有實例化狀態。只有當你有classinstance您將能夠調用.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 

如果您想要根據從返回的內容手動設置標籤,你可以這樣做:

#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 
+0

好的謝謝,只是通過這個工作,它是有道理的。但汽車是類別名稱,所以我認爲我需要關於category.name的具體位置? – tessad

+1

得到它感謝,這正是你所說的,但用@ category.name – tessad