2015-08-14 85 views
0

嘿堆棧用戶,傳遞變量到Rails梅勒

我一直在沮喪這個問題了大約兩個小時,不知道我做錯了。我在User的更新操作上調用方法send_intro_emailsend_intro_email方法調用名爲intro_email(user)NotificationMailer方法。

我遇到的問題是user的數據正在被一直傳遞,直到它在.erb電子郵件中使用的地步。我測試了它,它實際上正在通過,但不知道爲什麼我不能在電子郵件內部使用它。

文件:

notificaion_mailer.rb

def intro_email(user) 
    puts user # works 
    mail(to: "email", from: "email2", subject: "THIS IS A TEST") 
end 

User.rb

def send_intro_email 
    NotificationMailer.intro_email(self).deliver 
end 

intro_email.erb

The users name is <%= user.name %>. 

我可以顯示一個錯誤如果需要的話,當我登上我的另一臺電腦時會有消息。非常感謝你的幫助。

回答

0

那麼,你使用的是局部變量user,它的作用範圍僅限於你定義的方法。您必須使用實例變量@user作爲示例。所以改變是這樣做的:

def intro_email(user) 
    @user = user 
    mail(to: "email", from: "email2", subject: "THIS IS A TEST") 
end 

然後在視圖內使用@user。像

The users name is <%= @user.name %>. 
+0

嘿奧雅納,我其實沒有嘗試,我沒有收到錯誤,但它輸出@ user.name而不是「鮑勃」或任何郵件發送時。 –

+0

@ Matt-L將名稱更改爲intro_email.text.erb(這是用於文本電子郵件)。試着回到我身邊 –

+0

我會嘗試,當我回家,讓你知道它是如何工作的。謝謝 –