tag link_to image. comment ajouter une classe à une balise


90

J'utilise la balise link_to img comme suit

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

Ce qui aboutit au code HTML suivant

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

Je veux que le class = "dock-item" accède à la <a>balise au lieu de la balise img.

Comment puis-je changer cela?

Mettre à jour:

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

résulte en

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

Réponses:


137

salut tu peux essayer de faire ça

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

ou même

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

notez que la position des accolades est très importante, car si vous les manquez, les rails supposeront qu'ils forment un seul paramètre de hachage (en savoir plus à ce sujet ici )

et selon l' API pour link_to :

link_to(name, options = {}, html_options = nil)
  1. le premier paramètre est la chaîne à afficher (ou il peut également s'agir d'une image_tag)
  2. le second est le paramètre de l'url du lien
  3. le dernier élément est le paramètre facultatif pour déclarer la balise html, par exemple class, onchange, etc.

J'espère que ça aide! =)


Merci pour la réponse détaillée. J'accepterai votre réponse, mais faites-moi savoir si vous savez comment y parvenir avec la balise link_to également. <a href="https://stackoverflow.com/pages/search" class="dock-item"><img alt="Search" border="0" src="/images/Search.png?1264132800" /><span>Search</span></a>J'ai ajouté une balise span avant de fermer la <a>balise
Omniprésent

c'est en fait le même concept, vous devez donc trouver des moyens de presser à la fois l'image_tag et le span dans le paramètre "name". vous pouvez essayer ceci, pas le code complet mais je pense que vous pouvez le faire vous-même =) = link_to "# {image_tag} <span> Recherche </span>", ... pouvez-vous voir ce que j'essaie de faire?
Staelen

ah compris. ouais, je voulais le presser dans le paramètre de nom. mais n'était pas au courant de # {}. moments de plaisir avec des rails
Omniprésent

Cela peut être utile pour les autres: si vous voulez simplement ajouter une image à côté du texte du lien, vous n'avez qu'à faire <% = link_to image_tag ('image_path') + "link text", the_path%>
Nick Res

27

En ajoutant simplement que vous pouvez passer la link_tométhode un bloc:

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

résulte en:

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

Cela m'a sauvé la vie lorsque le concepteur m'a donné des liens complexes avec des effets de retournement css3 sophistiqués.


Je n'avais pas besoin des éléments supplémentaires qui précèdent le lien. Si vous vous débarrassez de href, vous pouvez simplement être dirigé vers l'url.
Jngai1297

C'était la meilleure réponse pour moi. Merci!
newUserNameHere

@newUserNameHere Pas de soucis! :)
Starkers

17

Le mieux sera:

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

C'est la solution la plus propre.
Raidspec

La meilleure solution, propre et sans boucle inutile.
Lucas Andrade

9

c'est ma solution:

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

6

Facile:

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

La première PARAM link_to est le texte / html pour relier (dans le un tag). Le prochain ensemble de paramètres est les propriétés d'url et les attributs de lien eux-mêmes.


J'avais essayé cela, mais l'ajouter là en fait un paramètre pour la chaîne. s'il vous plaît voir ma mise à jour
Omniprésent

Ouais, j'ai même écrit que le deuxième paramètre est l'url, mais je l'ai ensuite supprimé sans raison: P
Toby Hede

2

Pour répondre à votre question mise à jour, selon http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html ...

Soyez prudent lorsque vous utilisez l'ancien style d'argument, car un hachage littéral supplémentaire est nécessaire:

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

Laisser le hachage désactivé donne le mauvais lien:

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

2

Tout :action =>, :controller =>ce que j'ai vu beaucoup n'a pas fonctionné pour moi.

J'ai passé des heures à creuser et cette méthode a vraiment fonctionné pour moi en boucle.

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

Ruby on Rails utilisant link_to avec image_tag

De plus, j'utilise Rails 4.


1

J'ai essayé cela aussi et fonctionne très bien:

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

0

Hé les gars, c'est un bon moyen de lien avec l'image et a beaucoup d'accessoires au cas où vous voudriez un attribut css par exemple remplacer "alt" ou "title" etc ..... y compris également une restriction logique (?)

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

J'espère que cela t'aides!


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

Pouvez-vous expliquer quelques détails sur notre réponse?
Nilesh

Mes ans afficheront la sortie comme ceci: <a href="https://stackoverflow.com/pages/search"> <img alt = "Search" border = "0" class = "dock-item" src = "/ images / Search.png? 1264132800" /> </a> <span> Recherche </span> </a>
Vivek Kapoor

0

Vous pouvez également essayer ceci

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

Où "metas-logo" est une classe css avec une image d'arrière-plan

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.