21 Apr How to use absolute urls and helpers from mailers with Rails Or Spree
First thing first: Don’t forget to setup the environments in my case for example:
config/environments/development.rb
# mailer defaults config.action_mailer.default_url_options = { :host => "localhost:3000" }
config/environments/production.rb
config.action_mailer.default_url_options = { :host => 'elh.mx' }
And now let’s add the helpers
If you are just using the Rails you can do something like:
module MailersHelper def host_url_for(url_path) root_url.chop + url_path end end
and require the helper in your mailer:
class Mailer < ActionMailer::Base default from: "no-reply@lhola.com" helper :mailers def my_method @myId = 'id' end end
mailers/my_method.html.erb:
<%- edit_path = your_route_path(@myId) %> <%= link_to 'Anchor text', host_url_for(edit_path) %>
If you’re using Spree you can do it like so:
module MailersHelper def spree_host_url_for(url_path) spree.root_url.chop + url_path end end
and require the helper in your mailer:
class Mailer < ActionMailer::Base default from: "no-reply@lhola.com" helper :mailers def my_method @myOrderNumber = 'R23234234' end end
mailers/my_method.html.erb:
<%- edit_order_path = spree.edit_admin_order_path(@myOrderNumber) %> <%= link_to "#{@myOrderNumber}", spree_host_url_for(edit_order_path) %>
No Comments