2015-04-13 2 views
1

Я пытаюсь полностью понять строку кода в почтовой программе действий, которая показана в каждой документации, но не объясняется на самом деле.Action Mailer Variable Definition Пояснение

def welcome_email(user) 
@user = user #don't understand exactly which user this is 
mail(to: @user.email, subject: 'Do you have any spam?') 
end 

Я думал, что ты должен был определить эту переменную как User.find (Params [: ID]) или User.first или что-то еще, что извлекает конкретного пользователя. Что означает «пользователь» в этом контексте?

Спасибо за помощь в этом вопросе.

+0

Проходите пользователя в качестве аргумента welcome_email метод, и это то, что устанавливается в переменной экземпляра, которая, в свою очередь, передается на ваш шаблон электронной почты. Оформить заказ http://guides.rubyonrails.org/action_mailer_basics.html для получения подробной информации о том, как работает почтовая программа, и кстати, ваш сайт не работает :) – Mandeep

ответ

1

@user = user

Эта строка устанавливает значение переменной экземпляра @user к user который передается в качестве переменной к методу welcome_email.

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

Где-нибудь метод welcome_email называется, то, скорее всего, установить значение user с помощью user = User.find(params[:id]) или user = User.first или что-то подобное, и что user передается в качестве параметра с welcome_email(user) вызова.

Предполагая, что почтовая программа называется Notifier и приветствия электронной почты должен быть послан, когда пользователь подписывает вверх, следующий код, вероятно, будет в app/controllers/users_controller.rb файле:

class UsersController < ApplicationController 
    ... 
    def create 
    ... 
    @user = ... 
    Notifier.welcome_email(@user).deliver_now 
    ... 
    end 
    ... 
end 
+0

Спасибо, Prakash, что я до сих пор не понимаю, где находится значение «пользователь» из. Где этот набор? – Kelly

+0

См. Отредактированный ответ для примера. –

+0

Ahh, теперь это имеет смысл. Спасибо за объяснение. – Kelly

Смежные вопросы