我正在通过获取我的Rails API在React中发布帖子。在此信息中,我得到了一个主键和一个子段(我想将其用于URL)。
这是Post.js中的API调用示例
axios
.get(`/api/posts/${params.postId}`
例如,对于发布ID为1的子弹(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进行搜索但在标题中显示条形符号,那将是很好的选择。
要使它正常工作,我需要做什么?我是否需要创建一个带有条形ID的条形模型,然后引用帖子ID。我只是有点困惑。感谢您的帮助!
答案 0 :(得分:0)
我最终在Rails中使用了FriendlyID gem。它使该slug实现非常容易。
答案 1 :(得分:0)
首先,您需要向模型添加一个slug属性,并根据您的兴趣(使用SecureRandom或字符串)生成一个slug。 编写一个before_action(before_create)以将块添加到记录中。
在路径中添加子弹参数,以通过相应的子弹访问帖子,如下所示。
Rails.application.routes.draw do
resources :posts, param: :slug
end
调用API时,请以参数形式发送帖子ID,以查找如下所示的ID。
axios.get(`/api/posts/${params.slug}`, { params: {id: `${params.postId}`})
点击下面的链接以获取更多信息。
https://hackernoon.com/using-custom-slugs-for-rails-urls-500eb3f58f3c?gi=ec1178bf28d