如何在控制器中包含一个不是模型的类

时间:2015-07-21 11:23:16

标签: ruby-on-rails ruby-on-rails-4

我在home_helper.rb

中添加了ContactRequest类
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

这个类基本上用于将来自JSON POST的dat绑定到一个对象,然后我可以将其用于

  1. 验证验证码
  2. 通过SendGrid
  3. 将此对象的联系信息作为电子邮件发送

    因此,我没有任何需要保留信息。

    但是,当调用控制器的相关方法时,我收到错误

      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?或者我应该把这个类放在关注目录中?

1 个答案:

答案 0 :(得分:2)

您需要在类名HomeHelper前面添加模块名称:

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