如何在link_to锚点中渲染html + string?

时间:2012-06-03 14:05:14

标签: ruby-on-rails

在Rails应用程序中,我有帮助方法来呈现html片段,例如Twitter引导字体

def edit_icon
  content_tag(:i, "", :class=>'icon-edit')
end

我想在附加了附加文字的链接锚中显示它。 e.g。

<%= link_to "#{edit_icon} Edit this Record", edit_record_path(@record) %>

这当前将content_tag呈现为字符串,而不是HTML。如何将其呈现为HTML?

我使用<%= link_to "#{raw edit_icon}<%= link_to "#{edit_icon.html_safe}进行了实验,但在这种情况下,这似乎不是我需要的。

感谢任何想法。

1 个答案:

答案 0 :(得分:5)

问题是Rails字符串插值将content_tag的HTML输出转换为“安全”格式。您尝试的修复程序在应用字符串插值之前都会运行,这将不起作用

修复问题只需要进行一些小改动:将方法调用移到字符串之外。

Do this:
    <%= link_to edit_icon + "Edit this Record", edit_record_path(@record) %>
Instead of:
     <%= link_to "#{edit_icon} Edit this Record", edit_record_path(@record) %>