2015-07-21 1 views
1

Я добавил класс ContactRequest в home_helper.rbкак включить класс, который не является моделью в контроллере

module HomeHelper 

    class ContactRequest 
     include ActiveModel::Model 

     attr_accessor :name, :email, :phone, :message, :captcha 

     validates :name, presence: true,length: {in:2..255} 
     validates :email, presence: true, length: {in:6..255} 
     validates :message, presence: true 
     validates :phone, presence: true 
     validates :captcha, presence: true 
    end 

end 

Этот класс в основном будет использоваться для связывания DAT из JSON POST к объекту, который затем могу использовать для

  1. контролирующей Captcha
  2. Отправка контактной информации из этого объекта по электронной почте с помощью SendGrid

Следовательно, у меня нет необходимости в сохранении информации.

Однако я получаю сообщение об ошибке, когда соответствующий метод контроллера называется

def contact 
    @contactReq = ContactRequest.new(JSON.parse(params[:json])) 

    logger.debug "ContactRequest: #{@contactReq.attributes.inspect}" 

для этой линии я вижу в журналах

NameError (uninitialized constant HomeController::ContactRequest): 
    app/controllers/home_controller.rb:6:in `contact' 

не home_helper доступны к просмотру и этот контроллер? Или я должен помещать этот класс в каталог справки?

ответ

2

Вам необходимо добавить имя модуля перед именем класса HomeHelper:

def contact 
    @contactReq = HomeHelper::ContactRequest.new(JSON.parse(params[:json])) 
    ... 
end