ホーム DoRuby Rails3 メールテンプレートにURL作成の注意点

Rails3 メールテンプレートにURL作成の注意点

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

メール本文中のURLはエスケープされて、「&」は「& amp;」になってしまう注意点

 URLを作成

メール中でURLを作成するため、url_forを使用します。

 URLにパラメータを追加

url_for(:action => ‘some_action’, :custom1 => ‘some_value’, :custom2 => ‘some_value’, :escape => false)

:escape => falseを指定しないと、urlがエスケープされます。

「&」は「& amp;」になってしまいます。

●注意点:

Rails3から、<%= … %>で出力される値が暗黙的にエスケープ処理されるように変更になりました。

ですので、メールテンプレートの中で、下記のように書いても、メールを表示するとき、エスケープされて、「&」は「& amp;」になってしまいます。

<%= url_for(:action => ‘/some_action’/, :custom1 => ‘/some_value’/, :custom2 => ‘/some_value’/, :escape => false) %>

●対策:

html_safeを使用

<%= url_for(:action => ‘/some_action’/, :custom1 => ‘/some_value’/, :custom2 => ‘/some_value’/, :escape => false).html_safe %>

or

rawを使用

<%= raw(url_for(:action => ‘/some_action’/, :custom1 => ‘/some_value’/, :custom2 => ‘/some_value’/, :escape => false)) %>

 :formatを指定する場合

url_for :controller=>’posts’, :action=>’index’, :format=>:xml

結果:

http://www.example.com/posts.xml

url_forの詳しい使用について、下記を参照のこと

ドキュメント:

http://apidock.com/rails/ActionMailer/Base

http://apidock.com/rails/ActionController/Base/url_for

記事を共有
モバイルバージョンを終了