Rails - 按用户名和帖子ID

时间:2017-02-12 14:00:05

标签: ruby-on-rails

在我的帖子控制器中,现在我通过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参数呢?还是有更好的流程吗?

1 个答案:

答案 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

相关问题