Подтвердить что ты не робот

Отображение вида Rails для строки для электронной почты

Я хотел бы отправлять электронные письма из таблицы каждую ночь в полночь, поэтому я создал модель для отслеживания всех сообщений, которые нужно отправить. Эта модель Communication хранит, с какими буквами отправляется письмо, и из содержимого письма, которое должно быть отправлено как html. Пользователь вводит критерии соответствия, для которых предназначен письмо: состояние, страна, любимый цвет и т.д., Который возвращает список допустимых совпадений.

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

@communication = Communication.new(params[:communication])
@communication.body = //Render Partial with local variables to string here

8 января 2010 г. Я реализовал решение, предложенное нейтрино, и мой код выглядит следующим образом:

@communication.message_body = render_to_string(
  :partial => "letters/small_letter", 
  :locals => { :quote => @quote})

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

4b9b3361

Ответ 2

Возможно, вам захочется взглянуть на методы визуализации шаблона вне контроллера, например:

http://geek.swombat.com/rails-rendering-templates-outside-of-a-contro

Как говорится, вероятно, лучше использовать встроенный класс отправки электронной почты ActionMailer:: Base, который может отображать шаблоны для вас. Сохранение параметров в вашей модели связи, вероятно, лучше, чем сохранение развернутого HTML, поскольку эти параметры могут быть сериализованы и позже перенаправлены на вызов типа "send_X_notification".

Они могут быть построены с использованием генератора:

script/generate mailer communications_mailer

Ответ 3

вы можете попробовать это (в консоли rails):

  class StaticRender < ActionController::Base
    def self.render_erb(template_path, params)
      view = ActionView::Base.new(ActionController::Base.view_paths, {})
      class << view
        include ApplicationHelper
      end
      view.render(:file => "#{template_path}.html.haml", :locals => params, :layout => false)
    end
  end


 StaticRender.render_erb("home", {})

вам нужно иметь представление "домой" для этого....

Ответ 4

Вы пробовали action mailer? Он также отобразит ваши представления и предоставит поддержку активной записи.