Ruby on rails 如何使用id进行搜索,但在React中的url链接中使用slug
我正在使用Rails API获取React中的帖子。在这些信息中,我得到了一个主键和一个slug(我想用于URL) 这是Post.js中的一个示例API调用Ruby on rails 如何使用id进行搜索,但在React中的url链接中使用slug,ruby-on-rails,reactjs,slug,Ruby On Rails,Reactjs,Slug,我正在使用Rails API获取React中的帖子。在这些信息中,我得到了一个主键和一个slug(我想用于URL) 这是Post.js中的一个示例API调用 axios .get(`/api/posts/${params.postId}` 例如,post id为1,而slug为(this-is-a-slug)。 我想能够搜索使用的id和有URL被删除 /post/this-is-a-slug而不是post/1 这是Routes.js中的当前路由 <Route path
axios
.get(`/api/posts/${params.postId}`
例如,post id为1,而slug为(this-is-a-slug)。
我想能够搜索使用的id和有URL被删除
/post/this-is-a-slug而不是post/1
这是Routes.js中的当前路由
<Route path={"/post/:postId"} exact strict component={PostShow} />
我知道使用主Id比使用字符串搜索要快,所以如果我可以使用Id搜索,但在标题中显示slug就更好了
我需要做些什么才能让它工作?我是否需要创建一个带有slug id的slug模型,然后引用post id。我只是有点困惑。谢谢你帮助我 我最终使用FriendlyID gem来实现Rails。它使slug实现变得非常简单
首先,您需要向模型中添加slug属性,并根据您的兴趣生成slug(使用SecureRandom或字符串)。 写一个before_动作(before_create)将slug添加到记录中 将slug param添加到routes,以通过相应的slug访问post,如下所示
Rails.application.routes.draw do
resources :posts, param: :slug
end
axios.get(`/api/posts/${params.slug}`, { params: {id: `${params.postId}`})
在参数中调用API send Post id以查找id如下的帖子时
Rails.application.routes.draw do
resources :posts, param: :slug
end
axios.get(`/api/posts/${params.slug}`, { params: {id: `${params.postId}`})
请点击以下链接了解更多信息
当心,我不知道关于
slug
:)所以,您从后端收到一个响应,它有一个id
和一个slug
对吗?那你当然可以用<代码>:postId只是一个名称,它可以是任何东西。传递给链接组件的内容与此参数匹配。仅此而已。如果你通过id
它将是id
,如果你通过slug
它将是slug
。比如,如果你可以选择这个并在组件中使用,然后使用它。关于哪些id可以实际获取的信息来自哪里?我有一个帖子索引页面,其中包含所有帖子的JSON信息,包括id。只需使用slug搜索,速度差异可能可以忽略不计。看看FriendlyID gem for Rails,我认为它可以帮助您实现Slug