0

テキストとロゴ画像を使用してログインボタンを作成するためのRailsヘルパーを作成しています。テキストまたはimage_tagの結果のみをコンテンツとして配置すると、非常にうまく機能します。

def test_helper
  anchor = content_tag :a, "enter by", :href => '#'
  concat content_tag :div, anchor, :class => 'login'
end

# result:
# <div class="login"><a href="#">enter by</a></div>

def test_helper
  anchor = content_tag :a, image_tag("logo.png"), :href => '#'
  concat content_tag :div, anchor, :class => 'login'
end

# result:
# <div class="login"><a href="#"><img src="assets/logo.png" /></a></div>

しかし、連結の結果を渡そうとすると、htmlソースにエスケープ記号が付いたimgタグが返されます。

def test_helper
  anchor = content_tag :a, "enter by" + image_tag("logo.png"), :href => '#'
  concat content_tag :div, anchor, :class => 'login'
end

<div class="login"><a href="#">enter by&lt;img src=&quot;/assets/logo.png&quot; /&gt;</a></div>

文字列とcontent_tagの結果を適切に連結するにはどうすればよいですか?

4

1 に答える 1

4

問題は、anchor_tagを構築するときに連結が行われるためです。html_safeエスケープを回避するには、文字列リテラルを呼び出す必要があります。

anchor = content_tag :a, "enter by".html_safe + image_tag("logo.png"), :href => '#'
于 2012-12-20T19:41:00.403 に答える