[英]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_tag
和text
,所以需要將它們一起傳遞給輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.