你好,我想在rails中創建seo優化url。就像在stackoverflow中完成一樣。 現在這是我的網址在rails中的URL優化?
http://localhost:3000/questions/56
我想讓它是這樣的: -
http://localhost:3000/questions/56/this-is-my-optimized-url
我使用RESTful方法。 是否有任何插件可用於此。
你好,我想在rails中創建seo優化url。就像在stackoverflow中完成一樣。 現在這是我的網址在rails中的URL優化?
http://localhost:3000/questions/56
我想讓它是這樣的: -
http://localhost:3000/questions/56/this-is-my-optimized-url
我使用RESTful方法。 是否有任何插件可用於此。
我知道你要的插件,但死簡單的方法就是覆蓋在模型中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。
我強烈建議您查看friendly_id
插件。 FriendlyId Guide是一個很好的開始。我已經在生產中使用了幾個月,效果很好。
使用cached slugs功能使其成爲一個非常可擴展的解決方案。另外,如果處理非ASCII字符,我建議使用它與stringex
的組合。
嘿你的解決方案是相當不錯的。你能解釋一下嗎? – 2010-06-11 20:53:41
您定義的寧靜路線提供的_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