gpt4 book ai didi

ruby-on-rails - 需要帖子的 Rails url/:id/the-name-of-post

转载 作者:行者123 更新时间:2023-12-04 03:12:37 25 4
gpt4 key购买 nike

我希望我的 rails url 看起来像:

/posts/345/the-great-concept

当我在我的帖子模型中使用以下内容时,

def to_param
"#{id}/#{name.parameterize.downcase}"
end

在浏览器中鼠标悬停后,这些网址看起来很棒。并正常运行。然而,一旦页面加载到浏览器 url 中,它看起来像:

/posts/345%2Fthe-great-concept

需要说明的是,“名称”只是为了好看——帖子只能通过 id 检索。我也不想使用数据库 slug 方法。

我应该如何更好地处理这个问题?

附言。也不想要“/posts/345-the-great-concept”...

最佳答案

它被转义了,因为它不是路径的一部分,而是一个参数,所以它需要被转义,否则你会在错误的 uri 上。

def to_param
"#{id}-#{name.parameterize.downcase}"
end

编辑:好的,所以斜杠确实很重要;解决方法如下:

为此创建一个自定义路由:

# in config/routes.rb
resources :posts
match '/posts/:id/:slug' => 'posts#show', :as => :slug

然后创建你的 slug 方法:

# in app/models/post.rb
def slug
title.parameterize.downcase
end

然后将您的路由更改为 show 操作,以便链接到精美的 url:

# in any link to show; redirect after create, etc..
link_to slug_path(@post, :slug => @post.slug)

我创建了一个应用程序来测试所有这些,如果有兴趣,您可以在以下位置查看: https://github.com/unixmonkey/Pretty-Path

关于ruby-on-rails - 需要帖子的 Rails url/:id/the-name-of-post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com