Я пытаюсь создать свой первый плагин Rails, и у меня возникают проблемы с использованием ActionMailer. Плагин просто собирает отзывы пользователей и отправляет их по указанному адресу, поэтому с точки зрения функциональности это не слишком сложно ...Использование ActionMailer в плагине Rails
Все функциональные возможности отлично работали в моем оригинальном приложении, пока я не решил подключить этот материал. Я следовал за railsguide о создании плагина как можно больше, и вы можете найти источник всего моего плагина здесь:
http://github.com/gshankar/rocket_feedback
Хотя я уверен, что проблема заключается в одном из этих файлов:
1- файл, который загружает все в: rocket_feedback/Библиотека/rocket_feedback.rb
require 'rocket_feedback/routing'
require 'action_mailer'
%w{ models controllers }.each do |dir|
path = File.join(File.dirname(__FILE__), 'app', dir)
$LOAD_PATH << path
ActiveSupport::Dependencies.load_paths << path
ActiveSupport::Dependencies.load_once_paths.delete(path)
end
2- контроллер, который вызывает метод deliver_feedback rocket_feedback/Библиотека/приложение/контроллеры/rocket_feedback_controller.rb
class RocketFeedbackController < ApplicationController
#Email method for feedback
def send_feedback
subject = params["subject"]
from = params["email"]
feedback = params["feedback"]
RocketFeedback::deliver_feedback(from, subject, feedback)
respond_to do |format|
format.js { render :text => ''}
end
end
end
3- модель (которая наследует от ActionMailer)
class RocketFeedback < ActionMailer::Base
default_url_options[:host] = HOST
def feedback(from, subject, feedback)
@subject = "Feedback: #{subject}"
@subject_for_message = subject
@recipients = '[email protected]'
@from = from
@sent_on = Time.now
@sent_at = Time.now.strftime("%d/%m/%Y, %I:%M:%S %p").to_s
@body["sent_at"] = @sent_at
@body["from"] = from
@body["feedback"] = feedback
@body["subject"] = @subject_for_message
@headers = {}
end
end
Единственный ключ у меня есть сообщение об ошибке, когда я пытаюсь отправить отзыв с помощью плагина:
NoMethodError (undefined method `deliver_feedback' for RocketFeedback:Module):
Заранее спасибо за вашу помощь! (И, пожалуйста, не стесняйтесь критиковать структуру моего плагина, это моя первая попытка, поэтому я уверен, что все дела неправильно ...)
какая у вас рельсы версия? Я не уверен, почему, но иногда меняя Actionmailer :: Base на ActionMailer :: ARMailer работает – corroded
Я на 2.3.8, я проверю это благодаря подсказке! –