Rails 3 ActionMailer: :escape => false 不起作用,raw() 也不起作用



我想将查询字符串参数附加到从 Rails 3 ActionMailer 模板生成的 URL 中,但与号被实体转义了。

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

结果会产生带有 HTML 转义的 & 符号的 URL(如预期的那样),例如

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") %>

但这也逃脱了我的和号。

有没有办法在 HTML 电子邮件 URL 中传递未转义的查询字符串参数?

提前感谢!

汤姆

在 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') ) %>

相关内容

  • 没有找到相关文章

最新更新