使用content_tag自定义font-awesome按钮

时间:2013-03-19 14:46:47

标签: ruby-on-rails font-awesome

我想要一个看起来像Log in with [FB]的按钮,其中[FB]是字体真棒图标。 (请注意,此图标出现在最后)。为此,这有效:

= form_tag my_path, :method => :post do
  = button_tag do
    Log in with
    %i.icon-facebook

我想通过创建一个新的辅助方法来干掉它:

  def button_to_with_icon(path, text, button_class, icon)
    form_tag path, :method => :post do
      button_tag(:class => button_class) do
        text
        content_tag :i, "" , :class => icon.to_sym
      end
    end
  end

但是,text参数不会在HTML中呈现。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

button_tag块将使用文本返回的内容。在这里,您隐式返回content_tag并抛出文本。

您应该在concat区块中使用content_tag

button_tag do
  concat text
  concat content_tag(:i, nil, :class => icon.to_sym)
end

答案 1 :(得分:0)

在您的代码中,text的返回值只是浪费了。您必须同时返回content_tagtext

的串联
def button_to_with_icon(path, text, button_class, icon)
  form_tag path, :method => :post do
    button_tag(:class => button_class) do
      text + content_tag(:i, "" , :class => icon.to_sym)
    end
  end
end

ruby​​方法不是ERB: - )