その他
    ホーム技術発信DoRubyRails3 メールテンプレートに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