2010-06-11 78 views
0

你好,我想在rails中創建seo優化url。就像在stackoverflow中完成一樣。 現在這是我的網址在rails中的URL優化?

http://localhost:3000/questions/56 

我想讓它是這樣的: -

http://localhost:3000/questions/56/this-is-my-optimized-url 

我使用RESTful方法。 是否有任何插件可用於此。

回答

0

我知道你要的插件,但死簡單的方法就是覆蓋在模型中to_param方法。您可以將seo名稱附加到該ID。

例如:然後

class Question < ActiveRecord::Base 
    #has attribute name. 

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

的路徑/ URL助手將生成像這樣的路徑:

show_question_path(@question) 
>> /questions/12345-my-question-name 

你不需要做任何事情來你的路由。

您的控制器將保持Question.find(params [:id]),因爲參數將要調用它,這將刪除名稱並返回該ID。

+0

嘿你的解決方案是相當不錯的。你能解釋一下嗎? – 2010-06-11 20:53:41

+0

您定義的寧靜路線提供的_url和_path方法在傳入的對象上調用to_param。 因此,在此實例中,show_question_path(@question)調用@ question.to_param來獲取對象的id並使用它生成路線。 ActiveRecord :: find將在該點(12示例)採取id並在其上運行to_i。 String :: to_i函數會將字符串開始處的任何數字字符轉換爲整數,並忽略其餘字符。 謝謝解釋更完整的東西? – 2010-06-15 19:09:24

0

我強烈建議您查看friendly_id插件。 FriendlyId Guide是一個很好的開始。我已經在生產中使用了幾個月,效果很好。

使用cached slugs功能使其成爲一個非常可擴展的解決方案。另外,如果處理非ASCII字符,我建議使用它與stringex的組合。