【问题标题】:link_to image_tag with inner text or html in rails在rails中带有内部文本或html的link_to image_tag
【发布时间】:2011-07-20 05:12:10
【问题描述】:

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

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

Rails 中有什么好的方法?

【问题讨论】:

    标签: ruby-on-rails hyperlink


    【解决方案1】:

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

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

    【讨论】:

    • +1 当你想在文本周围包裹一个跨度和类时也可以工作:)
    【解决方案2】:

    或者更短的方式是

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这在 Rails 3 中不起作用,@Fazley 在下面的回答有效。由于资产管道,路径中也不需要使用 images/。
      • 这实际上是为我打印出图像标签的文本
      【解决方案4】:
      link_to(image_tag("image.png", :alt =>  "alt text", :class =>"anyclass"), image_url) 
      

      【讨论】:

        【解决方案5】:

        我似乎无法弄清楚如何为@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 时都会返回字符串。

        【讨论】:

          【解决方案6】:

          我更喜欢 HAML 中的这种方法

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

          【讨论】:

            【解决方案7】:

            这是一种很酷的方法,可以使用 link_to 来包含图像,并使用带有 Text 的 mailto href(显示在图像旁边):

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

            在你的视图中给你这样的东西(整个图像和文本变成了一个 mailto href):

            【讨论】:

              【解决方案8】:

              对我来说这很好用:

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

              【讨论】:

                【解决方案9】:

                我发现这也有效。

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-06-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多