2014-09-26 52 views

回答

6

我偶然发现了同样的问题,据我所知,通过阅读Rails代码,无法从邮件预览中访问请求参数。

关键的是在Rails::PreviewsControllerline 22(电子邮件是邮件法的名称)

@email = @preview.call(email) 
+0

我也试图访问预览电子邮件上的参数值。你不明白你的答案。你能解释@Michal – vinothini 2015-06-11 06:09:38

+0

@vinothini从电子邮件预览中不可能访问参数。 – 2015-06-11 07:38:33

+0

如果我的PR获得批准,您将可以执行此操作https://github.com/rails/rails/pull/20608 – equivalent8 2015-06-17 17:57:10

2

仍然是一个相关的问题,仍然很少有解决方案的网络(尤其是那些优雅)上找到。今天我通过这个黑客攻击并提出了这个解决方案,并提出了这个解决方案blog post on extending ActionMailer

# config/initializers/mailer_injection.rb 

# This allows `request` to be accessed from ActionMailer Previews 
# And @request to be accessed from rendered view templates 
# Easy to inject any other variables like current_user here as well 

module MailerInjection 
    def inject(hash) 
    hash.keys.each do |key| 
     define_method key.to_sym do 
     eval " @#{key} = hash[key] " 
     end 
    end 
    end 
end 

class ActionMailer::Preview 
    extend MailerInjection 
end 

class ActionMailer::Base 
    extend MailerInjection 
end 

class ActionController::Base 
    before_filter :inject_request 

    def inject_request 
    ActionMailer::Preview.inject({ request: request }) 
    ActionMailer::Base.inject({ request: request }) 
    end 
end 
相关问题