2013-11-06 4 views
0

У меня есть следующие в моем контроллере:Uninitialized Constant в Rails Controller

class SurveysController < ApplicationController 

    def index 
    survey_provider = FluidSurveysProviders::SurveyProvider.new 
    contact_lists = survey_provider.get_lists() 
    @survey = Survey.new(contact_lists) 
    end 

И я получаю эту ошибку:

NameError in SurveysController#index 
uninitialized constant SurveysController::FluidSurveysProviders 

Простите мой Rails noobiness, я уверен, что я оставив здесь что-то важное. Но мне кажется, что я пытаюсь «инициализировать» константу с этой линией:

survey_provider = FluidSurveysProviders::SurveyProvider.new

Но это та же самая линия, которая бросает ошибку, потому что он не инициализирован. Где я должен «инициализировать» Провайдера?

ответ

0

После того, как вы require fluid_surveys_providers (или аналогичный), то сделать это:

include FluidSurveysProviders

+0

Я этого не сделал. Когда я включаю FluidSurveysProviders', я получаю следующее: 'ActionController :: RoutingError (неинициализированная константа SurveysController :: FluidSurveysProviders)' вместо 'NameError' – Luigi

+0

Забыл упомянуть, что вам также нужно« потребовать »файл. – Vidya

0

Убедитесь SurveyProvider обернута с модулем FluidSurveysProviders. Это может выглядеть следующим образом

module FluidSurveysProviders 
    class SurveyProvider 
    ... 
    end 
end 

, если его объект ActiveRecord попробовать этот

class FluidSurveysProviders::SurveyProvider < ActiveRecord::Base 
    ... 
end 
0

SurveyProvider не был загружен правильно.

  1. Для быстрого исправления переместите файл класса в каталог app, например. app/lib/survey_provider.rb. Затем весь код внутри app будет автоматически загружен Rails.
  2. Или убедитесь, что путь к class SurveyProvider включен в autoload_path из Rails. В конфигурации/application.rb

    config.autoload_paths += %W(#{config.root}/lib) # where lib is directory to survery_provider

    Если вы используете Rails 5, будьте осторожны, что автозагрузка отключена в производственной среде. Проверьте это link for more info.

Смежные вопросы