Тег link_to. как добавить класс в тег

Я использую тег link_to img, как показано ниже

<%= 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> 

Я хочу, чтобы элемент dock-item class= перешел в тег <a> вместо тега img.

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

Update:

<%= 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> 

Ответ 1

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

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'

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

и в соответствии с api для link_to:

link_to(name, options = {}, html_options = nil)
  • первый параметр - строка, которая будет отображаться (или может быть также образ_tag)
  • второй параметр для URL ссылки
  • последний элемент является необязательным параметром для объявления тега html, например. класс, onchange и т.д.

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

Ответ 2

Просто добавив, что вы можете передать методу 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>

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

Ответ 3

Лучше всего будет:

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

Ответ 4

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

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

Ответ 5

Легко:

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

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

Ответ 6

Чтобы ответить на ваш обновленный вопрос, в соответствии с 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>

Ответ 7

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

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

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

Ruby on Rails с помощью link_to с image_tag

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

Ответ 8

Привет, ребята, это хороший способ связи с изображением и имеет множество реквизитов, если вы хотите использовать атрибут css, например, заменить "alt" или "title" и т.д...... также включая логическое ограничение (? )

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

Надеюсь, это поможет!

Ответ 9

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

Ответ 10

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

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

Где "metas-logo" - это класс css с фоновым изображением

Ответ 11

Я тоже пробовал это и очень хорошо работал:

      <%= 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 %>