2010-03-09 138 views
1

我有顯示這樣的List對象:添加標題軌道路線

www.mysite.com/lists/123

其中123是列表的ID。我想要做的就是添加URL列表的標題,使其更具信息性(適用於谷歌或其他)。所以,我想它看起來像:

www.mysite.com/lists/123/title-of-list-number-123

你如何去約增加了這樣的網址?如果您只輸入: www.mysite.com/lists/123沒有標題,是否應該找到標題,然後重定向到新路線?

回答

6

如果你想保持你的發現通話,因爲他們是(按id),你可以做什麼mplacona建議正好相反:

def to_param 
    "#{id}-#{title.parameterize}" 
end 

有了這個,你發現(PARAMS [:編號])將工作,因爲它會將字符串轉換爲整數(只能在數字位於字符串的開頭時才能成功)。因此,這是將實際工作:

List.find("123-my-title") 

,將是一樣

List.find(123) 

瞭解更多關於這一點,其他的方法來這裏做到這一點:http://gregmoreno.ca/how-to-create-google-friendly-urls-in-rails/

的參數化將自動轉換字符串到一個「漂亮」的網址。在這裏閱讀更多:http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367

如果你想多一點功能,我會建議friendly_id以及。

2

這篇文章說明了你需要做什麼來完成這件事。

http://railscasts.com/episodes/63-model-name-in-url

UPDATE

有一個固定鏈接添加到模型中,並保存爲遵循它:

def to_param 
    "#{permalink}-#{id}" 
end 

在你的控制,而不是由ID收拾東西,讓他們通過peeled:

@product = Product.find_by_permalink(params[:id]) 

這就是你需要的一切。

屏幕演示說明了如何做到這一點的所有步驟。

1

你也可以看一下friendly id,如果你想要一個gem /插件的話。