Rails' #link_to 在 ERB 外部使用时是否只接受其块中的一个参数?

Does Rails' #link_to only accept one parameter in its block when used outside of ERB?

当我在 ERB 中执行此操作时,它按预期工作,给我一个 a 标签,它环绕着图像和一些文本

<%= link_to(...) do %>
  <img src="..." />
  text
<% end %>

但是当我试图将其放入一个方法中时,a 标记仅包含最后一个参数,在本例中为文本。

  def build_link
    link_to(...) do
      image_tag(...)
      text
    end
  end

查看 docs,他们只给出了在 ERB 中使用 link_to 的示例,因此假设在方法中使用它效果不佳并且不能'不接受两个参数?

跟进我的评论:

行为发生的原因是 Ruby 处理块的方式,以及 Rails 处理 ActionController 输出的方式。

这里的技巧是使用得心应手的花花公子 concat

def build_link
  link_to("#") do
    concat image_tag("http://placehold.it/300x300")
    concat "hello world"
  end
end

假设您传递给 link_to 的块只是另一种方法,它会返回一些 object/value。在这种情况下,您的 text 对象将被返回。

但是因为你想同时输出 image_tagtext,所以你需要将它们一起传递给输出。