我有一个用户模型和一个配置文件模型。
user has_one :profile
profile belongs_to :user
由于这种关系,我通过调用用户 ID 来提取我的个人资料。所以我的网址看起来像这样:website.com/users/[user_id]/profile
我不确定我的问题是否有解决方案。这里是:我想显示 SEO 友好的 url。我正在考虑使用friendly_id
这个。但是,我们的个人资料是针对企业的,它是我们希望在 url 中输入的企业名称。问题是我们的用户模型故意不要求提供公司名称,并且它是user_id
当前显示在 url 中的。
有没有办法从配置文件模型中获取企业名称(即@profile.name),并使用它来填充 url 的 [user_id] 部分?
更新:我已经设置了friendly_id gem,看起来这可以工作。在我的个人资料模型中,我有这个:has_friendly_id :name, :use_slug => true
当我更新个人资料时,friendly_id
确实通过将个人资料中的企业名称放入 url 的user_id
一部分来对 url 进行 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
有没有办法使这项工作?