Ruby on rails 3 使URL成为文章的标题
目前我的URL显示为Ruby on rails 3 使URL成为文章的标题,ruby-on-rails-3,url,routes,format,Ruby On Rails 3,Url,Routes,Format,目前我的URL显示为www.website.com/entries/1,我想让它们显示为www.website.com/title of entry。我一直在处理路由,并且能够在URL中显示条目标题,但是Rails无法在不提供ID的情况下找到条目。如果我将ID与参数一起发送,URL将显示为www.website.com/title of entry?=1。我是否可以传递ID而不将其作为参数显示在URL中?谢谢 通常您希望将此部分保存在数据库条目标题(调用字段slug或其他`)。您的模型可以如下所
www.website.com/entries/1
,我想让它们显示为www.website.com/title of entry
。我一直在处理路由
,并且能够在URL中显示条目
标题,但是Rails无法在不提供ID的情况下找到条目
。如果我将ID与参数一起发送,URL将显示为www.website.com/title of entry?=1
。我是否可以传递ID而不将其作为参数显示在URL中?谢谢 通常您希望将此部分保存在数据库条目标题
(调用字段slug
或其他`)。您的模型可以如下所示:
class Entry < ActiveRecord::Base
before_validation :set_slug
def set_slug
self.slug = self.title.parameterize
end
def to_param
self.slug
end
end
更新
要记住几件事:
slug
是唯一的,否则条目。按slug查找(params[:id])
将始终返回遇到此slug的第一个条目Entry.find\u by_slug(params[:id])
不会引发ActiveRecord::RecordNotFound
异常,而只返回nil
。考虑使用<代码> Eng.FiffyBySulg!(参数[:id])和大多数事情一样,这件事也很有价值
安装很简单,几分钟后即可启动并运行。试一试。非常感谢您的详细建议@Wukerplank,我昨晚在这件事上搞砸了,没法把事情做好。无论我经过哪个
id
,我总是会被引导到相同的条目。我相信,如果有更多的时间和黑客攻击,我本可以按照你的建议让事情顺利进行,但为了不容易处理段塞/标题问题,我将使用gem。不过,你绝对应该为此投一票,再次感谢!
# instad of this
@entry = Entry.find(params[:id]
# use this
@entry = Entry.find_by_slug(params[:id])