如何在rails上获取动态生成的URL的规范URL?

问题描述 投票:0回答:2

我为主页实现了规范网址,如下所示:我添加了这一行

  <link rel='canonical' href='https://example.com/'> 

我在index.html.erb部分的header上添加了这一行。它工作正常。

现在我有动态路由生成线如下:

<a href "<%= search_equipments_path(:category_id => category.id) %>">

我试过以下:

<a rel='canonical' href="<%= search_equipments_path(:category_id => category.slug) %>">

但没有奏效。

ruby-on-rails canonical-link
2个回答
4
投票

我们可以用这种方式在rails中设置规范标签。此rails代码将输出完整当前url的规范标记。在HTML head部分的布局中添加它。

 <link rel="canonical" href="<%= url_for(:only_path => false) %>" />

您还可以使用以下命令指定要用于此URL的默认协议:

<link rel="canonical" href="<%=url_for(:only_path => false, :protocol => 'https')" />

有关更多选项,请参阅此link

希望这可以帮助。


3
投票

您可以使用content_for在布局的标题部分中创建动态块:

# app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    # ...
    <% if content_for?(:canonical_url) -%>
      <%= tag :link, href: content_for(:canonical_url), rel: 'canonical' %>
    <% end -%>
  </head>
</html>

然后,您可以在视图中提供canonical_url

<%= provide(:canonical_url, search_equipments_url(category.slug)) %>
© www.soinside.com 2019 - 2024. All rights reserved.