繁体   English   中英

link_to in helper with block

[英]link_to in helper with block

我试图让这个工作:

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

但它只能说明我所指定的图标i (Twitter的引导CSS),而不是在文本name ,我究竟做错了什么?

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

你必须连同串联两个字符串+产生一个返回值:

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

您需要使用html_safe来阻止标记内容自动进行HTML编码:

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

根据Twitter Bootstrap的个人经验,我知道你需要在namecontent_tag之间content_tag一个空格:

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

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

<%= link_to( ... ) do %>
  <%= name %>
  <%= content_tag( ... ) %>
<% end %>

我要考虑两件事:

1)需要对link_to块的全部内容进行清理。

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

2)我们可以期望输入nil吗?

如果我们在一个nil对象上调用html_safe ,事情就会破裂。 如果有可能发生这种情况,请使用raw

link_to("#", class: "add_fields btn btn-success") do
  raw(name + content_tag(:i, "", class: "icon-plus icon-white"))
end

是关于这个主题的一个很好的阅读。 我的博客文章介绍了一个有趣的应用程序。

对于那些使用font-awesome或其他东西的人来说,它可能不会显示图标。 但这个解决方案有效。

link_to :sort => column, :direction => direction do
   "#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM