2016-12-21 14 views
0

'app/helpers/transaction_helper.rb'폴더의 모듈을 사용하려고합니다. (이 응용 프로그램이 api_only 플래그를 사용하는 것이 중요합니다, 그리고 도우미가 생성 또는 기본적으로로드되지 않습니다.)Rails 5 API - api_only 플래그를 사용할 때 오류 자동 로딩 도우미가 발생했습니다.

module TransactionHelper 
    module Generator 
    def self.code_alphanumeric(params) 
    end 
    end 
end 

나는이 오류가있어 :

NameError: uninitialized constant TransactionHelper 

내가 추가 노력을 application.rb 다음 행

config.autoload_paths + = %의 W (# config.root {}/애플리케이션/헬퍼) ​​

require_relative 'boot' 

require "rails" 
# Pick the frameworks you want: 
require "active_model/railtie" 
require "active_job/railtie" 
require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "action_cable/engine" 
# require "sprockets/railtie" 
require "rails/test_unit/railtie" 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(*Rails.groups) 

module SistemaControleContasApi 
    class Application < Rails::Application 
    config.autoload_paths += %W(#{config.root}/app/helpers) 
    # Settings in config/environments/* take precedence over those specified here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 

    # Only loads a smaller set of middleware suitable for API only apps. 
    # Middleware like session, flash, cookies can be added back manually. 
    # Skip views, helpers and assets when generating a new resource. 
    config.api_only = true 
    end 
end 
,

하지만 작동하지 않을 때까지. 이 파일을 app/models 디렉토리에 넣으려고하면이 작업이 수행됩니다. 그러나 이것은 도우미를 배치하기에 적합한 로컬이 아닙니다.

누군가 도와 줄 수 있습니까?

+0

대신 _API mode_와 (과) 싸우는 중,이 코드를/lib/transaction_helper/generator로 옮기고 그 디렉토리를'autoload_paths'에 추가하십시오. – pdoherty926

+0

'config.autoload_paths'를'config.eager_load_paths'로 바꿀 수 있습니까? – 31piy

답변

0

일반적으로 app 아래의 모든 항목은 Rails ™ 이름 지정 규칙을 따르는 경우 기본적으로 자동로드됩니다. 여기를 참조하십시오 Docs.

set_autoload_paths: This initializer runs before bootstrap_hook. Adds all sub-directories of app and paths specified by config.autoload_paths, config.eager_load_paths and config.autoload_once_paths to ActiveSupport::Dependencies.autoload_paths.

첫 번째 단계에서는 설정에서 config.autoload_paths += %W(#{config.root}/app/helpers)을 제거해야합니다.

그런 다음 모든 모듈에 대해 하위 폴더를 만들어야합니다.
그래서 문제에 대해 당신은 또한이 모듈 범위에 self 필요하지 않습니다 app/modules/transaction_helper/generator.rb

아래 모듈을 넣어해야합니다.

module TransactionHelper 
    def generate_alphanumeric_code 
    # params are automatically available in helpers. 
    end 
end 

을 그리고 app/modules/transaction_helper.rb 아래에 넣어 :


개인적으로 나는 다음과 같이 헬퍼를 만들 것입니다.