在我的帖子控制器中,现在我通过user_id和post_id查找帖子并且它工作得很好
def find_post
@track = Track.find_by(user_id: params[:id], post_id: params[:post_id])
end
我正在寻找一种通过用户名找到帖子而不是user_id的方法 例如,如果它发现这样的帖子:
/:user_id/:post_id
类似于:
/:username/:post_id
那么如何访问url中的username参数呢?还是有更好的流程吗?
答案 0 :(得分:1)
Rails的路由器将:placeholder
映射到params
对象密钥。像
/:user_id/:slug
将user_id
映射到params[:user_id]
/:username/:slug
将username
映射到params[:username]
。因此,您可以通过params
对象访问提供的用户名。并使DB调用如
user = User.find_by_username(params[:username])
@post = user.posts.find(params[:post_id])
您无法直接从username
找到帖子,因为您没有该帖子属于哪个用户名的信息。您只有user_id
foreign_key
而不是username
。