Как частичное может определить, отрисовывается ли оно почтовой программой?

#ruby-on-rails #ruby-on-rails-3 #actionmailer

#ruby-on-rails #ruby-on-rails-3 #actionmailer

Вопрос:

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

Определить, существует ли сеанс, кажется, немного проблематично. Внутри частичного определен вызов?Кажется, что при отрисовке почты (session) всегда выдает значение true (это ошибка?), Но попытка получить доступ к «session» любым способом приводит к исключению «undefined method».

На данный момент моя почтовая программа использует переменную экземпляра @for_mailer, чтобы сигнализировать этой части о том, что она отрисовывается по-другому, но это не кажется очень элегантным. Есть ли какой-нибудь простой способ для partial выяснить, визуализируется ли оно почтовой программой или нет, в отличие от визуализации в контексте веб-запроса?

Комментарии:

1. Нет способа обнаружить вызывающего в вызове метода ruby.

2. @Tass : это и это

3. Оке. Чистого способа сделать это нет.

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

Ответ №1:

Я также создал бы два частичных файла для этого, но здесь также есть альтернативное решение.

Предполагая, что оно поступает с другого контроллера и действия, вы могли бы проверить параметры[:controller] и params[:action].

Если вы в конечном итоге будете делать это более нескольких раз, у вас, вероятно, получится больше кода, чем просто переписывание partial. Чем вы хотите отличаться между двумя презентациями?