Содержимое доставки сообщений ActionMailer - PullRequest
0 голосов
/ 09 марта 2012

У меня есть возможность отправить электронное письмо пользователю, если определенный пользователь запросил интерес к его продукту.В свое электронное письмо я хочу включить определенную информацию, полученную от пользователей, но в настоящее время я получаю ошибки, поскольку в них говорится, что они не определены, несмотря на то, что эти строки используются в другом месте моего приложения.Я скопирую электронное письмо, приведенное ниже, и что-либо между <%%> - это то, что я хочу включить, и мне было интересно, если кто-нибудь может указать мне правильное направление и сказать мне, какие из них являются правильными, а какие нет.Любая помощь будет замечательной.Сообщение, которое я хочу отправить, выглядит следующим образом:

Hello <%@user.username%>

The user <% current_user.username %> has registered an interest in the following product of  yours:

<% @game.game_name %>
<% @game.console %>
<% @game.genre %>

The user <% current_user.usernames %> has the following games for offer:

<% current_user.game.game_name %>
<% current_user.game.game_name %>
<% current_user.game.game_name %>

To view <% current_user.username %> profile click <% link_to "here", current_user.show %>
If you wish to contact the user by email then contact the following email <% current_user.email %>.

Надеюсь, это имеет смысл.Чтобы получить более полное представление о том, что у меня есть, у меня есть таблица пользователей, которая включает в себя информацию о пользователе, и таблица игр, которая содержит информацию об играх с внешним ключом user_id.У пользователей есть has_many с играми и играми, принадлежащими пользователю.

ОБНОВЛЕНИЕ

  class GameTrade < ActionMailer::Base
    default :from => "christopher@aol.com"

    def game_interest(user)
      @user = user
      @game = game
      mail :to => user.email, :subject => "Game Interest"
    end
  end

1 Ответ

1 голос
/ 09 марта 2012

Согласно http://guides.rubyonrails.org/action_mailer_basics.html, почтовик действий "наследует от абстрактного контроллера", но не от вашего ApplicationController, поэтому я не ожидал, что будет определено current_user.Кроме того, откуда взялся user?Как и в случае с контроллерами и их соответствующими представлениями, общая практика заключается в определении переменных экземпляра, таких как @user, @game и т. Д. В почтовой программе, а затем доступ к ним в представлениях.

Если вы думаете об этомздесь не имеет смысла иметь current_user, потому что, если вы начнете отправлять много писем, вы захотите сделать отправку электронной почты асинхронной (например, с помощью delayed_job или resque).В этом случае текущий пользователь не отправляет запрос, поскольку он больше не является частью цикла запрос / ответ.

...