FriendlyID是一個偉大的寶石。
實現用戶定義的頁面URL不應該很難。 與user_id
和link
class User < ActiveRecord::Base
has_many :pages
class Page < ActiveRecord::Base
belongs_to :user
has_friendly_id :link # link is name of the column whose value will be replaced by slugged value
創建表pages
在page#new
您添加的輸入爲link
屬性。
或者,您可以在title或其他名稱中設置friendly_id:use_slug => true選項。通過這種方式,FriendlyID將採用標題並對其進行修改,使其不具有限制字符。它將使用它自己的表來存儲slu。。使用可提高性能。
更新
爲了使用戶選擇他們是否wan't設置自定義鏈接,你可以這樣做:
- 集friendly_id上沒有蛞蝓的
link
場..
- 製作虛擬屬性
permalink
,以便您可以在您的表單中顯示它。
- 在before_filter中,檢查是否設置了
permalink
。
- 如果是,請將其寫入
link
字段。
- 如果不是,則將標題寫入
link
字段。
FriendlyID使用babosa
寶石生成slu。。如果你決定使用它爲好,這是喜歡你的過濾器可以如何看:
protected
def generate_link
#you might need to use .nil? instead
self.link = self.permalink.empty? ? make_slug(self.title) : make_slug(self.permalink)
end
def make_slug(value)
value.to_slug.normalize.to_s #you could as well use ph6py's way
end
請看看這個其他職位: [http://stackoverflow.com/questions/4995759/creating-seo-friendly-urls-in-rails-3][1] 。希望幫助, [1]:http://stackoverflow.com/questions/4995759/creating-seo-friendly-urls-in-rails-3 –