html_safe无法使用rails

时间:2015-01-30 00:23:02

标签: ruby-on-rails ruby erb html-safe

我无法让它工作......甚至使用raw或html_safe

视图

<%= button_to(glyphicon('heart', 'I love it !'), some_path, class: "btn btn-success")%>

辅助

def glyphicon(glyph, text = nil)
    html = "<i class=\"glyphicon glyphicon-#{glyph}\"></i>"
    html += " #{text}" if text
    html.html_safe
end

结果

之后<i class=" />的成功btn

以下作品(我已经做了很多年了),但额外的do语法很烦人......

<%= button_to(some_path(@etude), class: "btn btn-success") do %>
  <i class="glyphicon glyphicon-heart"></i> I love it !
<% end %>

修改

找到更紧凑的语法:

<%= button_to(some_path(@etude), class: "btn btn-success"){
      glyphicon('heart', 'I love it')} %>

1 个答案:

答案 0 :(得分:0)

我认为它不是html安全的问题,而是button_to的name属性只接受纯文本。

<%= button_to("<b>hello</b>".html_safe, 'http://www.google.com', :class => 'button', :method => 'get') %>

<%= button_to("<b>hello</b>", 'http://www.google.com', :class => 'button', :method => 'get') %>

两者都会生成一个写有<b>hello</b>的按钮,而不是粗体的hello。

使用do的方法是唯一的方法,在通过link_to链接glyphicons时需要做同样的事情。

但你可以这样做。

<%= button_to(some_path(@etude), class: "btn btn-success") do %>
  glyphicon('heart','I love it')
<% end %>