Mel*_*emi 5 routes ruby-on-rails helper urlhelper
我很难找到"Rails Way"来为邮件添加电子邮件确认网址.
我选择不完全RESTful这样做,因为它很难用文本电子邮件,因为它们无法PUT请求.
所以这是我的routes.rb: get 'confirm/:id' => 'Confirmations#confirm'
在我的邮件程序中,我想放置email_confirm_url(@user.email_token)我希望URL出现的位置.
我创建了一个帮手:
#app/helpers/confirmations_helper.rb
module ConfirmationsHelper
def email_confirm_url(token)
"/confirm/#{token}"
end
end
Run Code Online (Sandbox Code Playgroud)
这一切都有效,除非我打电话给email_confirm_url(@user.email_token)...
我真的得到:" /confirm/abcdefg…"
当我想要的是: http://myhostname/confirm/abcdefg…
或者在开发中: http://localhost:3000/confirm/abcdefg…
如何使我的URL帮助程序更像Rails中的内置<resource>_path和<resource>_url帮助程序?虽然实际上我认为我真的只需要 _url.
#Edit:我在我的环境配置中有这个:
#config/environments/development.rb
...
config.action_mailer.default_url_options = { :host => "localhost:3000" }
Run Code Online (Sandbox Code Playgroud)
为了访问请求对象,您应该在邮件程序的控制器中实现此函数,并使用变量将其传递给模板。
应用程序/mailers/emailer.rb
@tracking_url = "http://#{request.host}:#{request.port}/confirm/#{token}"
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/电子邮件程序/template_name.html.erb
<%= link_to 'name', @tracking_url %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2027 次 |
| 最近记录: |