I'm trying to get this to work:
link_to("#", class: "add_fields btn btn-success") do
name
content_tag(:i, "", :class => "icon-plus icon-white")
end
but it only shows me the icon specified by i
(twitter-bootstrap css) and not the text in name
, what am I doing wrong?
The return value of the block becomes its content. Only the last line is being returned.
You must concatenate the two strings together with +
to produce a single return value:
link_to("#", class: "add_fields btn btn-success") do
name + content_tag(:i, "", class: "icon-plus icon-white")
end
You'll need to use html_safe
to prevent the content of your tag from automatically being HTML encoded:
link_to("#", class: "add_fields btn btn-success") do
name + content_tag(:i, "", class: "icon-plus icon-white").html_safe
end
Speaking from personal experience with Twitter Bootstrap, I know you will need a space between name
and content_tag
:
link_to("#", class: "add_fields btn btn-success") do
name + ' ' + content_tag(:i, "", class: "icon-plus icon-white").html_safe
end
Alternatively, if you are inside an ERB template, you can output both values with <%=
:
<%= link_to( ... ) do %>
<%= name %>
<%= content_tag( ... ) %>
<% end %>
There are two things I'd consider:
1) The whole content of the link_to
block needs to be sanitized.
link_to("#", class: "add_fields btn btn-success") do
(name + content_tag(:i, "", class: "icon-plus icon-white")).html_safe
end
2) Can we expect input to be nil
?
Things will break if we call html_safe
on a nil
object. Use raw
if there is a chance this could happen.
link_to("#", class: "add_fields btn btn-success") do
raw(name + content_tag(:i, "", class: "icon-plus icon-white"))
end
This is a good read on the subject. My blog post presents an interesting application of this.
For those that use font-awesome or something else it might not show the icon. But this solution worked.
link_to :sort => column, :direction => direction do
"#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With