Rails 3 ActionMailer:: escape => false не работает и raw () - PullRequest
2 голосов
/ 16 мая 2011

Я хочу добавить параметры строки запроса к URL-адресам, созданным из шаблонов Rails 3 ActionMailer, но амперсанды экранируются от сущностей.

<%= user_url(@user, :host => 'example.com', :foo => 'bar', :fubar => 'baz') %>

приводит к URL-адресу с амперсандом, экранированным от HTML (как и ожидалось), например

http://example.com/user/123?foo=bar&amp;fubar=baz

(обратите внимание, это &amp;, а не &)

Я не хочу экранирования (потому что он ломает URL). Раньше я мог добавлять :escape => false, но это не влияет на результат сейчас. Я попытался поместить параметры строки запроса в строку типа ?foo=bar&fubar=baz и использовать raw() подобно

<%= user_url(@user, :host => 'example.com') + raw("foo=bar&fubar=baz") %>

но это также ускользнуло от моего амперсанда.

Есть ли способ передать неэкранированные параметры строки запроса в URL-адреса электронной почты в формате HTML?

Заранее спасибо!

Tom

1 Ответ

3 голосов
/ 04 июля 2011

Нашел это в билетах Rails.Он помечен как «закрытый», но все еще кажется проблемой с 3.1.0.rc4.

https://github.com/rails/rails/issues/687

РЕДАКТИРОВАТЬ: мне удалось исправить это, обернув мой помощник URLв raw().Например,

<%= raw( user_url(@user, :host => 'example.com', :foo => 'bar', :fubar => 'baz') ) %>
...