Правильно ли я это сделал - вызов действия с контроллера с link_to - PullRequest
0 голосов
/ 06 апреля 2011

Прошу прощения за простоту и продолжительность этого, но у меня есть небольшое тестовое приложение, которое имеет таблицу пользователей с атрибутами name, email и заработной платы.Я создал почтовую программу, которая будет отправлять отчет об этих данных конкретному пользователю по моему усмотрению, другими словами, когда я нажимаю кнопку.Моя кнопка создается с помощью link_to и вызывает действие в моем главном users_controller, который затем вызывает действие почтовой программы.(Надеюсь, это имело смысл).Это выглядит следующим образом и работает так, как я надеялся;Я просто хочу знать, если это правильный способ сделать что-то вроде этого:

В моем users_controller (создан генератором скаффолда):

def sendemail  
@user = User.find(params[:id])  
UserMailer.welcome_email(@user).deliver  
redirect_to user_path(@user)  
flash[:notice] = 'Email has been sent!'  
end  

В user_mailer.rbfile:

def welcome_email(user)
@user = user
@url  = "http://example.com/login"
mail(:to => user.email,
     :subject => "Welcome to My Awesome Site")
end

На странице пользователя show.html.erb вот как отправляется электронное письмо:

<%= link_to "Send Email", sendemail_user_path(@user) %>

В моем файле rout.rb, чтобы все выполнялось правильно(что он делает):

resources :users do 
member do 
get 'sendemail'
end

Итак, сказав все это, он работает так, как и должен.Я нажимаю на страницу show.html.erb пользователя, где у меня будут данные и диаграммы, которые я хочу в конечном итоге отобразить, и по своему усмотрению я могу отправить этому пользователю электронное письмо с этими данными или любым другим, что я положил вфайл mailer.html.erb.Когда он отправляется, он мигает сообщение, которое я указал в контроллере, и оставляет меня на этой странице, как я указал;так что работает.Я просто хочу знать, это правильный и самый рубиновый / грубый способ делать вещи?

1 Ответ

0 голосов
/ 06 апреля 2011

Этот код очень похож на пример Rails Guides Action Mailer , поэтому достаточно сказать, что вы создаете код railsy.

Кроме того, если ваше приложение приобрело более масштабный характер, вы могли бы рассмотреть возможность доставки электронной почты через фоновое задание, чтобы доставка электронной почты не блокировала текущий поток.

В противном случае код выглядит великолепно. Конечно, вы, скорее всего, отправите электронное письмо после того, как сделаете что-то успешное в контроллере, вместо того, чтобы иметь специальное действие для отправки по электронной почте напрямую. Например, у вас может быть действие welcome, которое отправляет электронное письмо об успешном сохранении записи пользователя.

...