2016-06-09 3 views
0

Ich arbeite an einer Sandbox-Version einer aktiven Website. Die Sandbox-Version der Website verweist auf einen anderen Domänennamen. Ich arbeite an E-Mails, die eine URL mit dem Wert von config.action_mailer.default_url_options in meinen Mailern generieren.Kann ich default_url_options für ActionMailer auf request.base_url oder request.domain setzen?

In config/environments/production.rb Ich habe den Domain-Namen für die aktive Website als Host. Ich möchte es ändern, wo es den Wert von request.domain oder request.base_url bekommt. Ist das möglich? Wenn ja, wie schreibe ich den Wert für den Host? Ich habe Folgendes versucht, aber Fehler erhalten, als ich den Rake-Befehl ausgeführt habe.

config.action_mailer.default_url_options = { :host => "#{request.base_url}" } 

    config.action_mailer.default_url_options = { :host => request.base_url } 

NameError: undefined local variable or method `request' for #<myrailsappname::Application:0x007faafc702bb0> 
Did you mean? require 

Ich habe Websuchen durchgeführt und haben festgestellt, keine Beispiele, wo ich request.base_url oder request.domain verwenden können.

Antwort

1

Sie können versuchen, diese ..

In einem application_controller.rb before_filter hinzufügen:

Action :: Base.default_url_options = {: host => request.host_with_port}

Eine andere Möglichkeit ist ..

Klasse UserMailer < Action :: Base

def welcome_email(user, request) 
    @user = user 
    @url = user_url(@user, host: request.host_with_port) #option2 (do this for each link) 
    mail(:to => user.email, 
     :subject => "Welcome to My Awesome Site") 
    end 
end 
+0

danke! Ich suchte weiter und fand Ihre Lösung in einem anderen Blogpost. Ich verwende Ruby on Rails 4, die before_action anstelle von before_filter verwendet. Ich habe die config-Anweisung in beiden meiner Initialisierer auskommentiert und es funktioniert gut! Anscheinend können Sie in den Konfigurationsdateien request.anything nicht verwenden. –

Verwandte Themen