通过 Friendly_Id Gem 在 URL 中使用 Slug 和 id
Posted
技术标签:
【中文标题】通过 Friendly_Id Gem 在 URL 中使用 Slug 和 id【英文标题】:Use Slug and id in URL with Friendly_Id Gem 【发布时间】:2014-03-19 02:46:30 【问题描述】:我正在使用 Friendly_id gem 来创建 Clean URL,它工作得很好,但是我想要一个像 http://localhost:3000/profile/1/jack-sparo
这样的 URL,而不是像这样的 URL 1
是 user_id
,所以怎么能我做吗?
这是我的配置/路线
get "profiles/show"
get '/profile/:id' => 'profiles#show', :as => :profile
get 'profiles' => 'profiles#index'
这是我的个人资料控制器
def show
@user= User.find_by_slug(params[:id])
if @user
@posts= Post.all
render action: :show
else
render file: 'public/404', status: 404, formats: [:html]
end
end
【问题讨论】:
【参考方案1】:我认为这是可行的:
# change in config/routes.rb
get '/profile/:id(/:username)' => 'profiles#show', :as => :profile
# change in app/controllers/profile_controller.rb
@user= User.find(params[:id])
# add to app/models/user.rb
def to_param
"#id/#username"
end
其中username
是friendly_id 用来生成slug 的任何东西
【讨论】:
以上是关于通过 Friendly_Id Gem 在 URL 中使用 Slug 和 id的主要内容,如果未能解决你的问题,请参考以下文章
Rails gem“friendly_id”:如何在创建对象之前获得 slug 的实时预览
rails 使用 friendly_id gem 按资源名称路由访问
更新时删除旧的friendly_id gem slug [关闭]