link_to图片标签。如何将类别添加到标签


90

我正在使用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> 

我希望class =“ dock-item”转到<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> 

Answers:


137

您好,您可以尝试执行此操作

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'

请注意,花括号的位置非常重要,因为如果您错过了它们,rails将假定它们形成单个哈希参数(在此处了解更多信息)

并根据api的link_to

link_to(name, options = {}, html_options = nil)
  1. 第一个参数是要显示的字符串(也可以是image_tag)
  2. 第二个是链接网址的参数
  3. 最后一项是用于声明html标签的可选参数,例如class,onchange等。

希望能帮助到你!=)


感谢您的详细回答。我会接受您的回答,但请告诉我您是否也知道如何使用link_to标签来实现这一点。. <a href="https://stackoverflow.com/pages/search" class="dock-item"><img alt="Search" border="0" src="/images/Search.png?1264132800" /><span>Search</span></a>在关闭<a>标签之前,我添加了一个span 标签
Omnipresent

它实际上是相同的概念,因此您需要找到将image_tag和span压缩到参数“ name”中的方法。您可以尝试执行此操作,而不是完整代码,但是我认为您可以自己执行此操作=)= link_to“#{image_tag} <span> Search </ span>”,...可以看到我要执行的操作吗?
Staelen

知道了 是的,我想将其压缩在名称参数中。但不知道#{}。与Rails一起
度过

这可能对其他人有帮助:如果您只想在链接的文本旁边添加图像,则只需<%= link_to image_tag('image_path')+“ link text”,the_path%>
Nick Res

27

只需添加,您就可以将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>

当设计师为我提供了精美的css3翻转效果的复杂链接时,这可以节省生命。


我不需要链接前的多余内容。如果您摆脱了href,则可以直接转到url。
Jngai1297 2014年

这是对我最好的答案。谢谢!
newUserNameHere 2014年

@newUserName这里没有后顾之忧!:)
Starkers

17

最好的是:

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

这是最干净的解决方案。
Raidspec '17

最佳解决方案,干净,没有任何不必要的循环。
卢卡斯·安德拉德

9

这是我的解决方案:

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

6

简单:

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

的第一个参数的link_to是text / html的链接(里面一个标签)。下一组参数是url属性和链接属性本身。


我试过了,但是在此添加它使其成为字符串的参数。请查看我的更新
Omnipresent

是的,我什至写道第二个参数是url,但随后无故删除了它:P
Toby Hede 2010年

2

要回答您更新的问题,请按照http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html的说明进行操作 ...

使用较旧的参数样式时要小心,因为需要额外的文字哈希:

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

保留哈希值会产生错误的链接:

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

2

整体 :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。


1

我也尝试过,并且效果很好:

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

嗨,大家好,这是链接图片的好方法,如果您要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"%>

希望这可以帮助!


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

您能解释一下我们答案的一些细节吗?
Nilesh 2014年

我的回答将显示如下输出:<a href="https://stackoverflow.com/pages/search"> <img alt =“搜索” border =“ 0” class =“ dock-item” src =“ / images / Search.png?1264132800” /> </a> <span>搜索</ span> </a>
Vivek Kapoor

0

你也可以试试这个

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

其中“ metas-logo”是具有背景图片的CSS类

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.