Вопрос по forms, twitter-bootstrap, ruby-on-rails – link_to в помощнике с блоком

18

Я пытаюсь заставить это работать:

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

но он показывает только значок, указанныйi (twitter-bootstrap css) а не текст вname, Что я делаю неправильно?

Ваш Ответ

3   ответа
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

это хорошо читать на эту тему.Мой блог представляет интересное приложение этого.

28

я строка возвращается.

Вы должны объединить две строки вместе с+ чтобы получить одно возвращаемое значение:

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

Говоря из личного опыта с 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 %>
если я делаю это, моя кнопка показывает:foo<i class="icon-plus icon-white"></i> wintersolutions
Вы можете использовать безопасный HTML, чтобы пометить ваши строки как не требующие кодирования HTML.
Я тоже протестировал его с html_safe, и он не работал, но это работает:link_to("#", class: "add_fields btn btn-success") do (name + ' ' + content_tag(:i, "", :class => "icon-plus icon-white")).html_safe end Если вы хотите, вы можете обновить свой ответ, большое спасибо! wintersolutions
1

кто использует font-awesome или что-то еще, значок может не отображаться. Но это решение сработало.

link_to :sort => column, :direction => direction do
   "#{title} #{content_tag(:i, "", class: "fa fa-chevron-up") }".html_safe
end

Похожие вопросы