【发布时间】:2010-11-25 13:34:40
【问题描述】:
我有一个用户模型和一个配置文件模型。
user has_one :profile
profile belongs_to :user
由于这种关系,我通过调用用户 ID 来提取我的个人资料。所以我的网址看起来像这样:website.com/users/[user_id]/profile
我不确定我的问题是否有解决方案。这里是:
我想显示 SEO 友好的网址。我正在考虑为此使用friendly_id。但是,我们的个人资料是针对企业的,它是我们希望在 url 中输入的企业名称。问题是我们的用户模型故意不询问公司名称,而当前显示在 url 中的是user_id。
有没有办法从配置文件模型中获取企业名称(即@profile.name),并使用它来填充 url 的 [user_id] 部分?
更新:我已经设置了friendly_id gem,看起来这可以工作。在我的个人资料模型中,我有这个:has_friendly_id :name, :use_slug => true
当我更新个人资料时,friendly_id 确实通过将个人资料中的公司名称放入网址的 user_id 部分来对网址进行 slugify。但是,当然,这引发了异常。
因此,如果配置文件模型中的商家名称是 Mike's Bar,则 URL 现在显示为 /users/mike-s-bar/profile。例外情况是这样的:找不到带有ID=mike-s-bar.的用户
这是我的个人资料控制器:
def show
@user = User.find(:all)
@profile = User.find(params[:user_id])
end
有没有办法让它工作?
【问题讨论】:
标签: ruby-on-rails models friendly-url slug