Я создаю систему электронной почты, которая хранит мои разные электронные письма в базе данных и вызывает соответствующий метод "delivery_" через method_missing
(поскольку я не могу явно объявить методы, поскольку они генерируются пользователем).
Моя проблема в том, что мое приложение rails по-прежнему пытается отобразить шаблон для любого сгенерированного электронного письма, хотя эти шаблоны не существуют.Я хочу заставить все электронные письма использовать один и тот же шаблон (views/test_email.html.haml
), который будет настроен для извлечения их форматирования из записей моей базы данных.
Как мне это сделать?Я попытался добавить render :template => 'test_email'
в методе test_email
в emailer_controller
безуспешно.
models/emailer.rb
:
class Emailer < ActionMailer::Base
def method_missing(method, *args)
# not been implemented yet
logger.info "method missing was called!!"
end
end
controller/emailer_controller.rb
:
class EmailerController < ApplicationController
def test_email
@email = Email.find(params[:id])
Emailer.send("deliver_#{@email.name}")
end
end
views/emails/index.html.haml
:
%h1 Listing emails
%table{ :cellspacing => 0 }
%tr
%th Name
%th Subject
- @emails.each do |email|
%tr
%td=h email.name
%td=h email.subject
%td= link_to 'Show', email
%td= link_to 'Edit', edit_email_path(email)
%td= link_to 'Send Test Message', :controller => 'emailer', :action => 'test_email', :params => { :id => email.id }
%td= link_to 'Destroy', email, :confirm => 'Are you sure?', :method => :delete
%p= link_to 'New email', new_email_path
Я получаю сообщение об ошибке:
Шаблон отсутствует
Отсутствует шаблон emailer / name_of_email_in_database.erb в пути просмотра приложения / views