erb文件中href内的字符串插值不起作用

时间:2014-09-19 12:15:07

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

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

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

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>

同时,<%= url %>之前的行输出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>

1 个答案:

答案 0 :(得分: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结尾,而不是_path,因为