如何在rails中形成一个rel规范网址,接受一个?page = param?

时间:2012-08-13 16:29:20

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我试图避免使用gem,因为我的问题非常简单。

我的网站有以下内容?params =

"type" just filters by type. if this isnt specified they're all lumped together
"sort" sorts by date/whats hot/latest
"view" changes compact view/list view
"scroll" isnt even used yet, its for infinite scroll on or off which i havent put in yet
"reset" is a link when you click the logo (not the home link) that resets all session params to "all" and "whats hot" (the default)
"page" is the pagination which i think is the only really important one

在得到一些帮助之后,我被告知?page=是唯一非常重要的一个,因为我的所有内容都可以在没有任何查询参数的情况下访问,除了分页。

所以现在我有了这个:

  <link rel="canonical" href="<%= "http://#{request.host + request.fullpath}" %>">

所以我的问题是我如何修改它以便它只放置URL,并且还放置?page =如果它存在但忽略所有其他参数?

3 个答案:

答案 0 :(得分:4)

这似乎有效

<link rel="canonical" href="<%= "http://#{request.host + url_for(:page => params[:page]) }" %>">

答案 1 :(得分:2)

2017年,我知道,你也可以使用Rails Auto Discovery Link

<head>
  <%= auto_discovery_link_tag(:atom, your_path('your-params'), { rel: "canonical" }) %>
</head>

答案 2 :(得分:0)

在最简单的情况下应该有效:

<link rel="canonical" href="<%= "#{request.protocol}#{request.host}#{request.path}" %>">

如果您正在使用协议或想在规范网址中使用GET参数,请不要忘记添加它。