2010-01-23 3 views
3

Я создал переменную экземпляра (@user) в модели почтовой программы и хочу получить к ней доступ в представлении? Но это дает мне ошибку (@user = nil). Каков наилучший способ передать переменную для просмотра (тело письма)?Как вы используете переменную экземпляра с почтовой программой в Ruby on Rails?

Спасибо, Чираг

ответ

7

Если вы хотите получить доступ к переменной экземпляра в шаблоне почтовой программы, то в модели почтовой программы добавить

@body[:user] = user_object 

выше создаст переменную экземпляра @user которые могут быть доступны в Ваше мнение. Вы должны быть в состоянии получить доступ к объекту пользователя на ваш взгляд почтовой программы, делая

@user 

Документах here есть примеры альтернативных способов, если вы используете несколько форматов (текст/HTML).

+1

Привет, я немного смущен примеры показывают непосредственно присваивающей значение @account = получатель, например .... работает ли это вместо этого? Это не для меня ... так интересно, ваш способ @body [: user] - это способ создания @user. – Angela

+2

это дает мне ожидаемое «вы пытались вызвать [] по ошибке nil (@body)». @nas - вы сообщаете, что эта строка будет @body [: user] = user_object, определенная выше и вне методов в модели почтовой программы? –

2

Чтобы передать переменную в тело вид/электронной почты, вы отправляете их в с помощью метода тела :-) So, for example, body :account => recipient приведет к экземпляру переменной @account с значение recipient быть доступным в представлении.

4

I Rails 3 процесс аналогичен:

@user = user_object 

выше создаст переменную экземпляра @user которые могут быть доступны в вашем представлении. Вы должны быть в состоянии получить доступ к объекту пользователя на ваш взгляд почтовой программы, делая

@user 

Обратите внимание, что вы должны установить эту переменную перед

mail(:from => "[email protected]", :to => recipient, :subject => "Subject") 
+1

«Обратите внимание, что вам нужно установить эту переменную перед отправкой почты (...» - это действительно помогло мне. Спасибо. – netricate