2011-07-02 60 views
6

嘿傢伙我試圖從字符串創建一個URL友好的鏈接。 而不是example.com/Jessica Alba,我想example.com/jessica-alba從字符串創建SEO友好的URL

我如何獲得link_to標記鏈接我到SEO友好永久鏈接?

我還需要確保show方法只在地址欄中顯示seo友好永久鏈接,並且只接受seo友好永久鏈接。

回答

4

您可以覆蓋模型中的to_param方法。

所以,如果你有一個名爲Celebrity模型,其中有一個name列,你可以去:

class Celebrity < ActiveRecord::Base 

    def to_param 
    self.name.downcase.gsub(' ', '-') 
    end 

end 

然後:

jessica_alba = Celebrity.find_by_name("Jessica Alba") 
    link_to "Jessica Alba", celebrity_path(jessica_alba) 
+2

Rails提供了這樣做,這是'parameterize'的方法。 因此,我建議您使用它並在模型上創建一個名爲** slug **的新字段。然後在slug和方法上添加一個驗證來構建它。例如: 'before_validation:generate_slug DEF to_param 蛞蝓 端 DEF generate_slug self.slug = name.parameterize end' 然後在YOUT控制器這樣做: 'jessica_alba = Celebrity.find_by_slug(PARAMS [:slug])' – Asteriskk

2

退房我在http://haspermalink.org

創建has_permalink寶石

那寶石將幫助你解決這個問題。

+0

還有friendly_id https://github.com/norman/friendly_id我碰巧喜歡 – Dex

27

最好的辦法是使用參數化方法:

name = name.parameterize 

Inflector#parameterize

+2

是的,這是要走的路。 – Philip

+0

除非你想自定義slu some如何使用下劃線而不是連字符。 –

+0

使用分隔符進行自定義,例如Rails約定ids''''Tim.Cook「.parameterize('_')=>」tim_cook「''' – neonmate