2014-10-01 40 views
0

我是Rails的新手,並在如何在郵件程序中實現動態值的問題上掙扎。如何使用帶動態值的Rails郵件程序?

下面的代碼一切正常,除了reply_to我想要一個動態值,但我不知道如何做到這一點。

params @name,@email,@message被捕獲在窗體上,我希望reply_to的值與從@email傳遞的參數相同。

所以,基本上這一點是有人可以預定一個事件,然後它會通過電子郵件將他們的詳細信息發送給活動經理,然後只需按下「回覆」,它就會回覆用戶填寫的電子郵件形成。

class BookingMailer < ActionMailer::Base 
     default from: "[email protected]" 
     default reply_to: @email 

     def contact_mailer(name,email,message) 
     @name = name 
     @email = email 
     @message = message 
     mail(to: '[email protected]', subject: 'Event Booking', reply_to: @email) 
     end 
    end 

我查看了API文檔,但他們似乎在使用動態值時引用數據庫中的用戶。

任何幫助非常感謝,謝謝!

+0

你是什麼意思「動態值」? – tadman 2014-10-01 20:19:37

回答

2

如果您想爲未設置選項的方法使用某些設置(例如,您設置了default from:,因此您無需每次都設置mail(from: "[email protected]"...)),則只設置默認值,如果未設置,將使用默認值)。

提供您的控制器傳遞的電子郵件地址作爲第二個參數,然後你的代碼應該工作,雖然平時我會通過一個預訂:

class BookingController < ApplicationController 
    def create 
    @booking = Booking.new(safe_params) 
    if @booking.save 
     BookingMailer.contact_mailer(@booking).deliver 
    else 
     # alarums! 
    end 
    end 
end 

然後提取您從您的郵件所需的信息:

class BookingMailer < ActionMailer::Base 
    default from: '[email protected]' 

    def contact_mailer(booking) 
    @booking = booking 
    mail(to: '[email protected]', subject: 'Event booking', reply_to: @booking.email) 
    end 
end 

理想情況下,你應該,因爲它是試圖用一個級實例變量@email刪除行default reply_to: @email,而不是實例變量@email你打算。有關類變量,實例變量和類實例變量之間差異的示例,請參閱:http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/

相關問題