簡體   English   中英

在ERB之外使用Rails的#link_to是否僅在其塊中接受一個參數?

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

當我在ERB中執行此操作時,它可以按預期工作,為我提供了a標簽, a標簽環繞着圖像和一些文本

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

但是,當我嘗試將其放入方法中時, a標記僅包裝了最后一個參數,在這種情況下為文本。

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

看一下文檔 ,他們只給出了在ERB中使用link_to的示例,因此,聰明地假設在方法中使用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的塊只是另一種方法,它會返回一些對象/值。 在這種情況下,將返回您的text對象。

但是因為要同時輸出image_tagtext ,所以需要將它們一起傳遞給輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM