Link_to в помощнике с блоком
Я пытаюсь заставить это работать:
link_to("#", class: "add_fields btn btn-success") do
name
content_tag(:i, "", :class => "icon-plus icon-white")
end
но только показывает мне значок, указанный i
(twitter-bootstrap css), а не текст в name
, что я делаю неправильно?
Ответы
Ответ 1
Возвращаемое значение блока становится его содержимым. Возвращается только последняя строка.
Вы должны объединить две строки вместе с +
для получения единственного возвращаемого значения:
link_to("#", class: "add_fields btn btn-success") do
name + content_tag(:i, "", class: "icon-plus icon-white")
end
Вам нужно использовать html_safe
для предотвращения автоматического кодирования содержимого вашего тега:
link_to("#", class: "add_fields btn btn-success") do
name + content_tag(:i, "", class: "icon-plus icon-white").html_safe
end
Говоря из личного опыта работы с Twitter Bootstrap, я знаю, что вам понадобится пробел между name
и 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 %>
Ответ 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
Это хорошо читается по этому вопросу. Мой пост в блоге представляет интересное приложение этого.
Ответ 3
Для тех, кто использует шрифт-awesome или что-то еще, он может не показывать значок. Но это решение сработало.
link_to :sort => column, :direction => direction do
"#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
end