2011-03-22 78 views
38

内文本或HTML我想输出on Rails的link_toimage_tag方法使用Ruby如下:的link_to IMAGE_TAG在轨

<a href="#">Lorem Ipsum <img src="/images/menu-arrow-down.gif"></a> 

什么是Rails中的好办法?

回答

29

为什么不只是使用链接和图像标签?

<%= link_to "hiii #{image_tag(yourimagepath)}", "link_path" %> 

你也可以尝试(string + image_tag)上面做了追加,但如果其中的一件事情变得nil它会抛出一个错误。使用插值,如果它是nil,它将只显示一个空白图像(或字符串)。

对于Rails 3中,您将需要使用html_safe

<%= link_to "hiii #{image_tag(yourimagepath)}".html_safe, "link_path" %> 
+0

+1击败我吧! :) – Chirantan 2011-03-22 05:21:54

+20

这将逃避Rails 3中的'img'标记,因此无法工作。 – 2011-03-22 05:48:20

+2

这在Rails 3中不起作用,@ Fazley的回答如下。由于资产管道,无需在路径中使用图像。 – Narayana 2013-05-19 05:55:56

3
link_to(image_tag("image.png", :alt => "alt text", :class =>"anyclass"), image_url) 
+0

适合我= = – 2014-01-30 16:54:04

81

您可以使用块作为替代字符串插补正确的用法html_safe。例如:

<%= link_to '#' do %> 
    Lorem Ipsum <%= image_tag('/images/menu-arrow-down.gif') %> 
<% end %> 
+6

+1不知道你可以做到这一点 – Hishalv 2012-03-10 09:33:15

+0

+1当你想要围绕文本包装一个范围和类:) – gef 2012-12-17 00:53:33

3

我似乎无法弄清楚如何添加评论到@ corroded的答案。但是,如果您使用的是Rails 3,他的答案将无法按预期工作。如何解决这个问题可能并不明显,至少它不适合我。我知道我需要添加html_safe,但把它放在错误的地方。回想起来,这很明显,但我认为我会将它列入像我这样的“菜鸟”错误的其他人。

<%= link_to "hiii #{image_tag(yourimagepath)}".html_safe, "link_path" %> 

但要小心,如果您使用“hiii”用户可指定变量,则需要先对其进行清理。

<%= link_to (h(my_model.some_string) + image_tag(yourimagepath)).html_safe, 
      "link_path" %> 

注意有是因为两者都为H()和IMAGE_TAG()返回一个字符串传递时my_model.some_string或yourimagepath是无任何问题。

31

或更短的方式是

<%= link_to image_tag('image/someimage.png') + "Some text", some_path %> 
+0

这是正确的答案! – servatj 2015-11-02 17:05:15

0

我发现这也是其工作。

link_to(image_tag("/images/linkd.png",:alt=>"twt"){},:href=>"some_url",:target=>"_blank") 
2

我喜欢这种做法,HAML

= link_to root_path do 
    = image_tag "ic_launcher.png", size: "16x16" 
    Home 
1

这里使用的link_to包括图像一个很酷的方式,并与文字一个mailto HREF(旁边显示的图像):

<%= link_to image_tag("image.png") + " [email protected]", 
         href: "mailto:[email protected]" %> 

在你看来,给你这样的东西(整个图像和文字变成了mailto href):

hyperlinked image and text with mailto