link_to image_tag与内部文本或rails中的html

时间:2011-03-22 05:15:35

标签: ruby-on-rails hyperlink

我想使用Ruby on Rails link_toimage_tag方法输出以下内容:

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

在Rails中有什么好方法?

9 个答案:

答案 0 :(得分:85)

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

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

答案 1 :(得分:34)

或者更短的方式是

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

答案 2 :(得分:33)

为什么不使用链接和图片标记?

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

答案 3 :(得分:4)

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

答案 4 :(得分: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" %>

请注意,my_model.some_string或yourimagepath为nil没有问题,因为h()和image_tag()在传递 nil 时返回字符串。

答案 5 :(得分:2)

我更喜欢HAML中的这种方法

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

答案 6 :(得分:1)

这是一种很酷的方式,可以使用link_to来包含图像,还可以使用带文本的mailto href(显示在图像旁边):

<%= link_to image_tag("image.png") + " some@email.com", 
                         href: "mailto:some@email.com" %>

在你的视图中给你这样的东西(整个图像和文字成为mailto href):

hyperlinked image and text with mailto

答案 7 :(得分:1)

对我来说,这很好:

<%= link_to(image_tag(<URL>,style),<URL>) %>

答案 8 :(得分:0)

我发现这也有效。

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