首先,我对rails和ruby非常陌生。
我正在尝试为自定义网址创建一个slug。
我有一个带有first_name&的用户模型。姓。这个模型也有一个slug。
我想要做的是检查我的数据库以查看是否有要创建的slug的实例,例如。看看有多少Joe博客存在。如果没有,则获取URL whatever.com/joe-blogs ,如果大于0,则获得计数值 whatever.com/joe-blogs-COUNT
我试图对我的slu it进行尝试时所做的事情
def generate_slug
NoSlug == Users.sum("slug").where(:slug => first_name-last_name.perameterize)
if NoSlug == 0
self.slug ||= first_name-last_name.perameterize
else NoSlug > 0
self.slug ||= first_name-last_name-NoSlug.perameterize
end
end
我试图解决它,但没有这样的运气 - 任何建议或指示?
谢谢!
答案 0 :(得分:7)
我一直在使用FriendlyId gem并且很高兴。如果要组合名字和姓氏,可以执行类似
的操作class User < ActiveRecord::Base
extend FriendlyId
friendly_id :full_name, use: :slugged
def full_name
"#{first_name} #{last_name}"
end
end
宝石将负责为您进行参数化。 This RailsCast也可能有所帮助。
答案 1 :(得分:0)
在模型中编写这些方法
before_validation:generate_slug
def name
“#{first_name}#{last_name}”
结束
def generate_slug
self.slug = self.name.downcase.gsub(/ \ s + /,' - ')。gsub(/ [^ a-zA-Z0-9 _] + /,'')
结束