Rails如何将link_to用于外部网站并使用块?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails如何将link_to用于外部网站并使用块?相关的知识,希望对你有一定的参考价值。

我正在尝试使用link_to与块,并与外部网站链接,我已经知道如何使用link_to使我的div可点击(learned from here),并使用link_to将用户发送到另一个网站(learned from here),但当我尝试结合这个两个approches我收到一个错误:

undefined method 'stringify_keys' for "www.google.com":String

这是我的html.erb代码:

<%= link_to @slides[0].link, "#{@slides[0].link}", target: "_blank"  do %>
  <div class="carousel-item active">
    <%= image_tag @slides[0].slide_image.thumb.url, class: "d-block w-100", alt: @slides[0].image_text %>
    <div class="carousel-caption d-none d-md-block">
      <h5><%= @slides[0].image_text %></h5>
    </div>
  </div>
<% end %>

我也尝试过:

<%= link_to @slides[0].link do %> # or
<%= link_to "#{@slides[0].link}", :target => "_blank" do %>
# I got the same error

<%= link_to url_for(@slides[0].link) do %>
# above I got localhost:3000/https://google.com insted of https://google.com

有谁知道如何做到这一点?

答案

带块的link_to的工作原理如下:

link_to(url, html_options = {}) do
  # block
end

link_to helper source

所以你必须这样做:

<%= link_to @slides[0].link, target: "_blank"  do %>
  #block
<% end %>

(假设@slides[0].link == "https://google.com"即有效的外部网址)

以上是关于Rails如何将link_to用于外部网站并使用块?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 glyphicons 添加到 rails link_to helper - Bootstrap 3

在 Rails 应用程序中单击 link_to 标记后如何使用 JS 刷新浏览器

使用 link_to Rails 设置会话变量

Rails 5使用link_to更新日期

如何从 Rails 中的控制器混入和调用 link_to?

Rails 3 - link_to 使用 jquery ajax 调用部分