rails for ruby-on-rails ruby

ruby-on-rails - for - send mailer rails



Cómo configurar ActionMailer default_url_options''s: host de forma dinámica al nombre de host de la solicitud? (3)

Estoy tratando de establecer las opciones de url predeterminadas de host: host para acción.

Tengo el siguiente conjunto en todos los archivos de entorno

config.action_mailer.default_url_options = { :host => "localhost" }

Quiero que sea más dinámico al proporcionar el host de solicitud.

cuando intento establecerlo

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

O

config.action_mailer.default_url_options = { :host => request.env["SERVER_NAME"] }

Lanza error ... no reconoce el objeto "solicitud"

¿hay alguna manera de configurar esto para el host de solicitud, no por hardcoding ...?



También es posible configurar un host predeterminado que se utilizará en todos los publicitarios configurando la opción: host en el hash default_url_options

en un application_controller.rb agrega:

class ApplicationController < ActionController::Base def default_url_options { host: request.host_with_port } end end

Fuente: https://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options

Alternativamente, puede pasar la request cuando llame a la función de correo desde el controlador

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

Fuente: https://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-with-named-routes


el problema es que estos son inicializadores, se ejecutan cuando los raíles se acumulan y no cuando se llama a un mailer activo.

pero no tiene que usar la opción default_url, puede simplemente pasar el nombre de host a url_for / named routes en cada una de las vistas de su correo. El valor predeterminado simplemente evita tener que hacer eso.

vea la sección http://api.rubyonrails.org/classes/ActionMailer/Base.html sobre la generación de URL.