簡體   English   中英

Rails控制器中未初始化的常量

[英]Uninitialized Constant in 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的煩惱,我確定我在這里遺漏了一些重要的東西。 但是在我看來,我試圖通過此行“初始化”常量:

survey_provider = FluidSurveysProviders::SurveyProvider.new

但這是引發錯誤的那一行,因為它沒有初始化。 我應該在哪里“初始化”提供者?

一旦require fluid_surveys_providers (或類似的工具),請執行以下操作:

include FluidSurveysProviders

確保SurveyProvider用模塊FluidSurveysProviders包裝。 可能看起來像這樣

module FluidSurveysProviders
  class SurveyProvider
    ...
  end
end

如果它是一個ActiveRecord對象,請嘗試

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

SurveyProvider未正確加載。

  1. 要快速修復,請將類文件移至app目錄,例如app/lib/survey_provider.rb 然后, app程序內的所有代碼將由Rails自動加載。
  2. 或者確保Rails的autoload_path中包含class SurveyProvider的路徑。 config / application.rb中

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

    如果使用Rails 5,請注意在生產環境中禁用了自動加載功能。 檢查此鏈接以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM