【问题标题】:String interpolation inside href in erb files doesn't workerb文件中href内的字符串插值不起作用
【发布时间】:2014-09-19 12:15:06
【问题描述】:

我想在用户注册时发送确认邮件。

我正在使用设计并生成设计视图来修改它们

File is /app/views/devise/mailer/confirmation_instructions.html.erb

<% url = "#{ENV['ROOT_APP_URL']}/#/confirm/#{@token}" %>
<p>Welcome <%= @email %>!</p>
<p>You can confirm your account email through the link below:</p>
<%= url  %>
<a href="<%= url %>">Confirm My Account </a>

问题是最后一行的输出是

<a>Confirm My Account</a>

同时,&lt;%= url %&gt; 前面的行输出localhost:9001/#/confirm/XxyJGz。 我尝试使用 raw 助手,但结果相同

编辑

我写的和输出的片段

ERB

<% url = "#{ENV['ROOT_APP_URL']}/#/confirm/#{@token}" %>
<p>Welcome <%= @email %>!</p>

<p>You can confirm your account email through the link below:</p>
<%= url  %>
<a href="<%=  url %>">Confirm My Account</a>

<% foo = "localhost:9001/#/confirm/XxyJGz" %> followed by <a href="<%= foo %>">Foo</a>

HTML

<p>Welcome user@email.com</p>

<p>You can confirm your account email through the link below:</p>

localhost:9001/#/confirm/NLirkXqjNq5dfwDti8Lc
<a target="_blank" class="">Confirm My Account</a>

followed by <a target="_blank">Foo</a>

【问题讨论】:

  • Account 后面的空格也不见了。这是您的实际代码和输出吗?
  • 这很奇怪。如果字符串解释不起作用,我希望看到类似&lt;a href=&gt;Confirm My Account&lt;/a&gt; 的内容。不知道为什么它会使`href=`消失。如果您尝试&lt;% foo = "localhost:9001/#/confirm/XxyJGz" %&gt;,然后是&lt;a href="&lt;%= foo %&gt;"&gt;Foo&lt;/a&gt;,会发生同样的问题?正如@Stefan 指出的那样,这真的代表了您的尝试吗?
  • @lurker 我用例子更新了问题
  • @NadeemKhedr 您正在编辑 HTML 输出,不是吗? (用户邮箱后面的感叹号不见了)
  • 只有email部分,因为是我的真实邮件,其余都是复制粘贴

标签: ruby-on-rails ruby ruby-on-rails-4 erb


【解决方案1】:

作为一个绝对网址,应该有一个协议。所以你的url 变量应该以"http://""https://" 开头

第二件事是,你可以使用普通的 link_to 助手。 您必须在环境文件中指定 config.action_mailer.default_url_options(这样您就可以在开发环境中指向 localhost:9001,在生产环境中指向生产 url)。

这可以通过:

config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost:9001' }

和你的

config/environments/production.rb
config.action_mailer.default_url_options = { host: 'your-domain.com' }

那么在你看来你应该可以使用

<%= link_to confirmation_instructions_url(token: @token) %>

或任何你的 url_helper 被调用。 请注意,url helper 调用必须以_url 结尾,而不是_path,因为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2013-07-24
    • 2017-11-27
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多