0

根據this guide,我正在使用to_param爲我的對象創建友好的URL。我從它使用to_param創建具有標籤的名稱,而不是它的ID網址acts_as_taggable_on創業板Tag對象:現在to_param僅在某些控制器中正常運行

class Tag < ActiveRecord::Base 

    def to_param 
    name 
    end 

    def self.find_by_param(input) 
    find_by_name(input) 
    end 
end 

,在我的應用程序有幾個地方我我所鏈接的頁面此標記其中顯示所有關聯的對象。在我的主頁,下Static控制器(和其他控制器),鏈接到一個Tag對象的行爲正確:

_tag_item.html.erb

<span class="tag"><%= link_to "##{tag_item}", tag_path(tag_item) %></span> 

正常生產:

<span class="tag"><a href="/tags/gandalf">#gandalf</a></span> 

注意如何href指向友好的URL,而不是默認使用ID。

但是,在Tag控制器本身的標籤'index頁面中列出了應用程序中的所有標籤,但此行爲的行爲並不正確。

views/tags/index.html.erb

<% @tags.each do |tag| %> 
    <div class="tag-box"> 
     <%= link_to tag, tag_path(tag) %> 
    </div> 
<% end %> 

錯誤產生:

<a href="/tags/2">gandalf</a> 

,我不知道爲什麼。

回答

-1

controllers/tags/index.html.erb變化

<%= link_to tag, tag_path(tag) %> 

<%= link_to "##{tag}", tag_path(tag) %> 
+0

我並不想以一個主題標籤添加到鏈接的文本。我試圖讓'link_to'正確使用我在別處指定的友好URL。關鍵是'link_to'在某些地方輸出'/ tags/gandalf',在其他地方輸出'/ tags/1'。 – Polyov

+0

好吧,我的壞。你可以調試循環中的'tag'對象嗎?它是否是'Tag'的一個實例。 – Sunny

+0

它是'ActsAsTaggableOn:Tag'的一個實例,這是我用於標記的gem。 – Polyov

相關問題