Использование link_to со встроенным HTML - PullRequest
96 голосов
/ 22 февраля 2012

Я использую Bootstrap от Twitter и у меня есть следующий 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> сбивает меня с толку?

Ответы [ 12 ]

248 голосов
/ 22 февраля 2012

Два пути.Либо:

<%= 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) %>
16 голосов
/ 24 мая 2012

У меня недавно была такая же потребность. Попробуйте это:

<%= link_to '<i class="icon-ok icon-white"></i> Do it'.html_safe, user_path(@user) %>

9 голосов
/ 26 августа 2014

У вас также есть возможность создать вспомогательный метод, как показано ниже:

def link_fa_to(icon_name, text, link)
  link_to content_tag(:i, text, :class => "fa fa-#{icon_name}"), link
end

Адаптируйте классы под свои нужды.

8 голосов
/ 23 февраля 2012

Если вам нужна ссылка в rails, которая использует тот же класс значков из начальной загрузки Twitter, все что вам нужно сделать, это примерно так:

<%= link_to "Do it@", user_path(@user), :class => "btn icon-ok icon-white" %>
6 голосов
/ 03 марта 2014

Использование HAML:

= link_to model_path do
  %img{src: '/assets/someimg.png'}
6 голосов
/ 20 декабря 2012

В gem twitter-bootstrap-rail: они создают вспомогательный глиф

  def glyph(*names)
    content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub('_','-')}" }
  end

Таким образом, вы можете использовать его как: glyph(:twitter) и ссылка на помощник может выглядеть так:

2 голосов
/ 25 декабря 2012

Я думаю, что вы можете упростить его с помощью вспомогательного метода, если часто используете его в своем приложении.

поместите его в 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) %>
2 голосов
/ 09 октября 2012

Я сделаю это, поскольку вы еще не приняли ответ
и другие ответы не на 100% то, что вы искали.
Это способ сделать это способом Rails.

<%= link_to(user_path(@user), :class => 'btn') do %>
  <i class="icon-ok icon-white"> </i> Do it!
<% end %>

Редактировать: оставив мой ответ для дальнейшего использования,
но у @ Джастина-Херрика правильный ответ, когда
работа с Twitter Bootstrap.

1 голос
/ 01 апреля 2018

В обычном HTML мы делаем,

<a href="register.html"><i class="fa fa-user-plus"></i> Register</a>

В Ruby On Rails:

<%= link_to routeName_path do %>
  <i class="fa fa-user-plus"></i> Link Name
<% end %>

<%= link_to register_path do %>
   <i class="fa fa-user-plus"></i> Register
<% end %>

This is My Output

1 голос
/ 30 июня 2016
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...