2010-01-22 2 views
83

Я использую link_to IMG тег, как следующийlink_to тег изображения. как добавить класс к тегу

<%= link_to image_tag("Search.png", :border=>0, :class => 'dock-item'), 
:action => 'search', :controller => 'pages'%><span>Search</span></a> 

что приводит следующий HTML

<a href="/pages/search"><img alt="Search" border="0" class="dock-item" 
src="/images/Search.png?1264132800" /></a><span>Search</span></a> 

Я хочу, чтобы класс = «док-элемент», чтобы перейти к <a> тег вместо тега img.

Как я могу это изменить?

Обновление:

<%= link_to image_tag("Search.png", :border=>0), :action => 'search', 
:controller => 'pages', :class => 'dock-item' %> 

приводит к

<a href="/pages/search?class=dock-item"><img alt="Search" border="0" 
src="/images/Search.png?1264132800" /></a> 

ответ

128

привет вы можете попробовать сделать это

link_to image_tag("Search.png", border: 0), {action: 'search', controller: 'pages'}, {class: 'dock-item'} 

или даже

link_to image_tag("Search.png", border: 0), {action: 'search', controller: 'pages'}, class: 'dock-item' 

к сведению, что положение фигурных скобок очень важно, потому что если вы пропустите их, рельсы будут считать, что они образуют единичные параметры хэша (подробнее об этом here)

и в соответствии с api for link_to:

link_to(name, options = {}, html_options = nil) 
  1. первый параметр является строкой, чтобы показать (или это может быть IMAGE_TAG а)
  2. второй параметр для URL канала связи
  3. последний элемент является необязательным параметр для объявления тега html, например класс, замена и т. д.

надеюсь, что это поможет! =)

+0

Спасибо за подробный ответ. Я согласен с ответом, но дайте мне знать, если вы знаете, как достичь этого с помощью тега link_to. 'SearchSearch' Я добавил тег span перед закрытием '' tag – Omnipresent

+0

, это на самом деле та же концепция, поэтому вы необходимо найти способы сжать как image_tag, так и span в параметр «name». вы можете попробовать это, а не полный код, но я думаю, вы можете сделать это самостоятельно =) = link_to "# {image_tag} Поиск", ... вы можете видеть, что я пытаюсь сделать? – Staelen

+0

ах получил. да, я хотел сжать его в параметре имени. но не знал о # {}.funtime with rails – Omnipresent

5

Easy:

<%= link_to image_tag("Search.png", :border=>0), :action => 'search', :controller => 'pages', :class => 'dock-item' %> 

Первые пары из link_to текст/HTML, чтобы связать (внутри a тег). Следующий набор параметров - это свойства URL и сами атрибуты ссылок.

+0

Я попытался это, но добавив его там делаю его параметр для строки. см. мое обновление – Omnipresent

+0

Да, я даже написал, что вторым параметром является url, но затем удалил его без причины: P –

2

Чтобы ответить на ваш обновленный вопрос, в соответствии с http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html ...

Будьте осторожны при использовании более старый тип аргумента, поскольку необходим дополнительный буквальным хэш:

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article" 
    # => <a href="/articles" class="article" id="news">Articles</a> 

Оставляя хэш от дает неправильную ссылку:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article" 
    # => <a href="/articles/index/news?class=article">WRONG!</a> 
15

Лучшие будет:

link_to image_tag("Search.png", :border => 0, :alt => '', :title => ''), pages_search_path, :class => 'dock-item' 
+0

Это самое чистое решение. – Raidspec

+0

Лучшее решение, чистое и без излишней петли. –

0

Эй, ребята, это хороший способ связи с изображением и имеет множество реквизитов в случае, если вы хотите css атрибут fo г Пример замена «Alt» или «название» и т.д. ..... также включая логическое ограничение (?)

<%= link_to image_tag("#{request.ssl? ? @image_domain_secure : @image_domain}/images/linkImage.png", {:alt=>"Alt title", :title=>"Link title"}) , "http://www.site.com"%> 

Надеется, что это помогает!

22

Просто добавив, что вы можете передать методу link_to блок:

<%= link_to href: 'http://www.example.com/' do %> 
    <%= image_tag 'happyface.png', width: 136, height: 67, alt: 'a face that is unnervingly happy'%> 
<% end %> 

результаты в:

<a href="/?href=http%3A%2F%2Fhttp://www.example.com/k%2F"> 
    <img alt="a face that is unnervingly happy" height="67" src="/assets/happyface.png" width="136"> 
</a> 

Это была жизнь заставка, когда дизайнер дал мне сложные связи с fancy css3 roll-over.

+0

Мне не нужен дополнительный материал, который приходит перед ссылкой. Если вы избавитесь от href, вы можете просто обратиться к URL-адресу. – Jngai1297

+0

Это был лучший ответ для меня. Благодаря! – newUserNameHere

+0

@newUserNameHere Не стоит беспокоиться! :) – Starkers

0
<%= link_to root_path do %><%= image_tag("Search.png",:alt=>'Vivek',:title=>'Vivek',:class=>'dock-item')%><%= content_tag(:span, "Search").html_safe%><% end %> 
+0

Не могли бы вы объяснить некоторые подробности нашего ответа? – Nilesh

+0

My ans будет показывать выходные данные следующим образом: Search Поиск

2

Весь :action =>, :controller => немного, что я видел вокруг много не работает для меня.

Отработанные часы копания, и этот метод определенно работал для меня в цикле.

<%=link_to(image_tag(participant.user.profile_pic.url(:small)), user_path(participant.user), :class=>"work") %> 

Ruby on Rails using link_to with image_tag

Кроме того, я использую Rails 4.

7

это мое решение:

<%= link_to root_path do %> 
    <%= image_tag "image.jpg", class: "some class here" %> 
<% end %> 
0

Вы также можете попробовать этот

<li><%= link_to "", application_welcome_path, class: "navbar-brand metas-logo" %></li> 

Где «м ЕТ-логотип»является CSS класса с фоновым изображением

0

Я попытался это тоже, и работает очень хорошо:

 <%= link_to home_index_path do %> 
     <div class='logo-container'> 
     <div class='logo'> 
      <%= image_tag('bar.ico') %> 
     </div> 
     <div class='brand' style='font-size: large;'> 
      .BAR 
     </div> 
     </div> 
     <% end %> 
Смежные вопросы