web-dev-qa-db-ja.com

railsの内部テキストまたはHTMLを含むlink_to image_tag

Ruby on Rails link_toおよびimage_tagメソッド:

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

Railsで良い方法は何でしょうか?

42
useranon

画像タグへのリンクを使用しないのはなぜですか?

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

正しい使用法で文字列補間の代わりにブロックを使用できますhtml_safe。例えば:

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

または短い方法です

<%= link_to image_tag('image/someimage.png') + "Some text", some_path %>
35
Fazley
link_to(image_tag("image.png", :alt =>  "alt text", :class =>"anyclass"), image_url) 
4
trying_hal9000

@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()がnilを渡すと文字列を返すため、my_model.some_stringまたはyourimagepathがnilであっても問題はありません。

3
James

私はHAMLでこのアプローチを好む

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

Link_toを使用して画像を含めるクールな方法と、テキスト付きのmailto href(画像の横に表示)を次に示します。

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

ビューに次のようなものを表示します(画像とテキスト全体がmailto hrefになります)。

hyperlinked image and text with mailto

2
Eribos

私もこれが働いたことがわかりました。

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

私にとってこれはうまくいきました:

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