Jon Smock的解決方案也可以工作。我傾向於喜歡以下。
class Hamburger << ActiveRecord::Base
#this normally defaults to id
def to_param
name
end
end
class SomeModelController << ApplicationController
def show
@hamburger = Hamburger.find(params[:id]) #still default code
end
end
#goes in some view
This is the <%= link_to "tastiest hamburger ever", url_for(@hamburger) %>.
這是嚴格意義上的搜索引擎優化技術(美麗的網址也方便用戶,我建議他們絕對每個人,即使你不關心搜索引擎優化,例如在頁面登錄後)。我對Rails SEO有更深入的討論,其中包括其他技巧,here。
重要提示:您應該在設計時考慮如果param
應該更改,您將要做什麼。例如,在我的漢堡包場景中,我完全可能會將「Sinasty Delicious Cheeseburger」重新命名爲「Triple Bypass」。如果更改了網址,可能會有一些影響,例如客戶鏈接到我的網站的損壞。因此,對於生產用途,我通常給這些模型一個不變的permalink
屬性,我初始化爲具有人類意義的恰好一次。如果對象稍後發生變化,那麼URL保持不變。 (還有其他解決方案 - 這是最簡單的一個。)