19

私はこれを機能させようとしています:

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

iしかし、 (twitter-bootstrap css)で指定されたアイコンのみが表示され、のテキストは表示されませんname。何が間違っているのでしょうか。

4

3 に答える 3

30

ブロックの戻り値がその内容になります。最後の行だけが返されます。

+単一の戻り値を生成するには、2つの文字列をで連結する必要があります。

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

nameTwitter Bootstrapの個人的な経験から言えば、との間にスペースが必要になることを私は知っています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 %>
于 2012-07-03T18:36:54.547 に答える
2

私が考える2つのことがあります:

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か?

html_safeオブジェクトを呼び出すと、物事が壊れnilます。rawこれが発生する可能性がある場合に使用します。

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

これは主題についての良い読み物です。私のブログ投稿は、これの興味深いアプリケーションを紹介しています。

于 2015-03-13T03:02:39.427 に答える
1

font-awesomeなどを使用している場合は、アイコンが表示されない場合があります。しかし、このソリューションは機能しました。

link_to :sort => column, :direction => direction do
   "#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
end
于 2016-07-11T11:13:23.650 に答える