Rails 6 - 将 URL 中 root_path 的参数更改为 SEO 友好的 URL

Posted

技术标签:

【中文标题】Rails 6 - 将 URL 中 root_path 的参数更改为 SEO 友好的 URL【英文标题】:Rails 6 - change params for root_path in URL to SEO friendly URL 【发布时间】:2021-10-15 19:36:32 【问题描述】:

当我调用某个名称在 URL 中的控制器时,我知道如何更改路由,但不知道如何处理:

Will_paginate:

http://localhost:3000/?page=4

我想要

http://localhost:3000/page/4

路线:

root to: 'pages#home_logged_in'

【问题讨论】:

get '/pages/:page' => 'pages#home_logged_in'够了吗? 足够... :-) 【参考方案1】:

我不确定will_paginate 是否具有更改链接结构方式的功能,因此您可能需要在视图中手动计算和显示页面链接。

在路由中,您可以设置标准的非分页路由来处理初始请求,然后设置分页路由来处理各个页面。

get '/pages/:page', to: 'pages#index' # will pass params[:page]
root to: 'pages#index'

然后在 pages#index 中检查并应用 page 参数(如果存在):

def index
  page = params[:page] || 1
  @items_being_paginated = ItemModel.paginate(page)
end

我没有亲自使用过will_paginate gem,所以 gem 的特定代码取自他们的wiki。


取决于您使用它的目的 - 例如,如果它只是分页项目 - 以上应该适合您。如果您尝试获取单个项目的 SEO 质量链接,您可以使用动态路由,如下所示:

  get '*path', to: 'pages#show', as: 'pages_show'

或参数化

  get ':category/:sub_category', to: 'pages#index', as: 'sub_pages_index'
  get ':category/:sub_category/pages/:page', to: 'pages#index', as: 'sub_paginated_pages_index'
  get ':category/:sub_category/:item', to: 'pages#show', as: 'pages_show'

在控制器中,您只需使用第一个解析路由,或者将参数与第二个一起使用。

如果您想了解更多信息,Rails 路由指南的This part 可能会让您感兴趣。

【讨论】:

以上是关于Rails 6 - 将 URL 中 root_path 的参数更改为 SEO 友好的 URL的主要内容,如果未能解决你的问题,请参考以下文章

Rails:将所有未知路由重定向到 root_url

Rails - 如何将生成的 URL 修复为友好的 URL

6--Rails架构中的资源2

如何使用 Ruby on Rails 5 将数据从 URL 提取到表单中

Rails将url预先发布到生产中的资产路径

如何在 Rails 6 中将我的 Ngrok 隧道动态添加到 config.hosts?