link_to in helper with block

win*_*ons 19 forms ruby-on-rails twitter-bootstrap

我试图让这个工作:

link_to("#", class: "add_fields btn btn-success") do
  name
  content_tag(:i, "", :class => "icon-plus icon-white")
end
Run Code Online (Sandbox Code Playgroud)

但它只显示i(twitter-bootstrap css)指定的图标而不是文本name,我做错了什么?

mea*_*gar 29

块的返回值成为其内容.只返回最后一行.

您必须将两个字符串连接在一起+以生成单个返回值:

link_to("#", class: "add_fields btn btn-success") do
  name + content_tag(:i, "", class: "icon-plus icon-white")
end
Run Code Online (Sandbox Code Playgroud)

您需要使用html_safe以防止标记的内容自动进行HTML编码:

link_to("#", class: "add_fields btn btn-success") do
  name + content_tag(:i, "", class: "icon-plus icon-white").html_safe
end
Run Code Online (Sandbox Code Playgroud)

从Twitter的引导个人的经验来说,我知道你会需要之间的空间namecontent_tag:

link_to("#", class: "add_fields btn btn-success") do
  name + ' ' + content_tag(:i, "", class: "icon-plus icon-white").html_safe
end
Run Code Online (Sandbox Code Playgroud)

或者,如果您在ERB模板中,则可以使用以下内容输出两个值<%=:

<%= link_to( ... ) do %>
  <%= name %>
  <%= content_tag( ... ) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 我也用html_safe测试了它并且它没有用,但是这个工作:`link_to("#",class:"add_fields btn btn-success")do(name +''+ content_tag(:i,"",:class) =>"icon-plus icon-white")).html_safe end`如果你想要你可以更新你的答案,非常感谢你! (4认同)