2014-09-26 231 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 
相關問題