3

のようなボタンが欲しいのですが、フォントの素晴らしいアイコンはLog in with [FB]どこにありますか。[FB](このアイコンは最後に表示されることに注意してください)。この目的のために、これは機能します:

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

新しいヘルパー メソッドを作成して、これを DRY したいと思います。

  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 でレンダリングされません。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

10

button_tagブロックは、そこに返されたものをテキストとして使用します。ここでは、暗黙的に を返しcontent_tag、テキストをスローしています。

ブロックconcat内で使用する必要があります。content_tag

button_tag do
  concat text
  concat content_tag(:i, nil, :class => icon.to_sym)
end
于 2013-03-19T14:55:05.607 に答える
0

あなたのコードでは、戻り値はtext単に無駄になります。と の両方の連結を返す必要がcontent_tagありtextます。

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 ではありません :-)

于 2013-03-19T14:51:00.337 に答える