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>
,我不知道爲什麼。
我並不想以一個主題標籤添加到鏈接的文本。我試圖讓'link_to'正確使用我在別處指定的友好URL。關鍵是'link_to'在某些地方輸出'/ tags/gandalf',在其他地方輸出'/ tags/1'。 – Polyov
好吧,我的壞。你可以調試循環中的'tag'對象嗎?它是否是'Tag'的一個實例。 – Sunny
它是'ActsAsTaggableOn:Tag'的一個實例,這是我用於標記的gem。 – Polyov