Я использую материал Twitter Bootstrap, и у меня есть следующий HTML:
<a class="btn" href="<%= user_path(@user) %>"><i class="icon-ok icon-white"></i> Do it@</a>
Какой лучший способ сделать это в Rails? Я хотел бы использовать <%= link_to 'Do it', user_path(@user) %>
, но <i class="icon-ok icon-white"></i>
отбрасывает меня?
Два способа. Или:
<%= link_to user_path(@user) do %>
<i class="icon-ok icon-white"></i> Do it@
<% end %>
Или:
<%= link_to '<i class="icon-ok icon-white"></i> Do it@'.html_safe, user_path(@user) %>
<%= link_to ...
в примере с блоком?
У меня была такая же потребность в последнее время. Попробуйте следующее:
<%= link_to '<i class="icon-ok icon-white"></i> Do it'.html_safe, user_path(@user) %>
Если вам нужна ссылка в рельсах, которая использует тот же самый класс значков из загрузочного буфера twitter, все, что вам нужно сделать, это что-то вроде этого.
<%= link_to "Do it@", user_path(@user), :class => "btn icon-ok icon-white" %>
btn
, все, что вы видите, это значок. Внешний вид кнопки не означает, что это кнопка.
У вас также есть возможность создать вспомогательный метод, как показано ниже:
def link_fa_to(icon_name, text, link)
link_to content_tag(:i, text, :class => "fa fa-#{icon_name}"), link
end
Адаптируйте классы к вашим потребностям.
В gem twitter-bootstrap-rail: они создают вспомогательный глиф
def glyph(*names)
content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub('_','-')}" }
end
Итак, вы можете использовать его как: glyph(:twitter)
и вы можете связать помощника: link_to glyph(:twitter), user_path(@user)
Использование HAML:
= link_to model_path do
%img{src: '/assets/someimg.png'}
Я думаю, вы можете упростить его с помощью вспомогательного метода, если вы часто используете его в своем приложении.
поместите его в helper/application_helper.rb
def show_link(link_text, link_source)
link_to("#{content_tag :i, nil, class: 'icon-ok icon-white'} #{link_text}".html_safe,
link_source, class: "btn")
end
Затем вызовите его из своего файла вида так же, как link_to
<%= show_link "Do it", user_path(@user) %>
Если вы используете bootstrap 3.2.0, вы можете использовать этот помощник в своем app/helpers/application_helper.rb
module ApplicationHelper
def glyph(*names)
content_tag :i, nil, :class => names.map{|name| "glyphicon glyphicon-#{name.to_s.gsub('_','-')}" }
end
end
а затем в ваших представлениях:
link_to glyph(:pencil) + ' Edit', edit_post_path(@post), class: 'btn btn-warning'
Я сделаю это, так как вы еще не приняли ответ
и другие ответы не на 100%, что вы искали.
Это способ сделать это Rails способом.
<%= link_to(user_path(@user), :class => 'btn') do %>
<i class="icon-ok icon-white"> </i> Do it!
<% end %>
Изменить: оставить мой ответ для дальнейшего использования,
но @justin-herrick имеет правильный ответ, когда
работа с Twitter Bootstrap.
def show_link (source, text)
link_to source, {'data-original-title' => 'Show', 'data-toggle' => 'tooltip', :class => 'btn btn-xs btn-success'} do
"#{text} #{content_tag :i, nil, class:' glyphicon glyphicon-eye-open' }".html_safe
end
end
Помощник на основе предложения Титаса Милана, но используя блок:
def show_link(link_text, link_source)
link_to link_source, { class: 'btn' } do
"#{content_tag :i, nil, class: 'icon-ok icon-white'} #{link_text}".html_safe
end
end