FriendlyID 是一个很棒的宝石。
实现用户定义的页面 URL 应该不难。pages
使用user_id
and创建表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
在您添加属性page#new
的输入。link
或者,您可以使用 :use_slug => true 选项在 title 或其他内容上设置 friendly_id。这样 FriendlyID 将获取标题并对其进行修改,使其没有和受限制的字符。它将使用它自己的表来存储蛞蝓。用于cached_slug
提高性能。
更新
要让用户选择是否要设置自定义链接,您可以这样做:
link
在没有蛞蝓的场地上设置friendly_id ..
- 制作一个虚拟属性
permalink
,以便您可以在表单中显示它。
- 在 before_filter 中,检查是否
permalink
设置了。
- 如果是,请将其写入该
link
字段。
- 如果不是,请在该
link
字段中写入标题。
FriendlyID 使用babosa
gem 生成 slug。如果您也决定使用它,您的过滤器可能如下所示:
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