Rails 6 - 将 URL 中 root_path 的参数更改为 SEO 友好 URL
Rails 6 - change params for root_path in URL to SEO friendly URL
我知道当我调用名称在 URL 中的某个控制器时如何更改路由,但不知道如何处理:
Will_paginate:
http://localhost:3000/?page=4
我想要
http://localhost:3000/page/4
路线:
root to: 'pages#home_logged_in'
我不确定 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 可能会让您感兴趣。
我知道当我调用名称在 URL 中的某个控制器时如何更改路由,但不知道如何处理:
Will_paginate:
http://localhost:3000/?page=4
我想要
http://localhost:3000/page/4
路线:
root to: 'pages#home_logged_in'
我不确定 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 可能会让您感兴趣。