2017-03-01 5 views
0

Ich lerne Schienen und ich mag es zu lernen, indem ich versuche, etwas wirklich zu schaffen.Fehler beim Erstellen eines neuen Rechners auf Spree Commerce Juwel

Ich habe ein paar Probleme beim Versuch, einen neuen Taschenrechner zu erstellen, der im Versandbereich von Spreecommerce verwendet werden soll.

Nach dieser Dokumentation Tutorial.

http://guides.spreecommerce.org/developer/calculators.html#creating-a-new-calculator

Tutorial Nach i in diesem Verzeichnis dieser Klasse erstellt.

app/models/spree/calculator/shipping/my_own_calculator.rb 

Meine Klasse ist auf diese Weise

class MyOwnCalculator < Spree::ShippingCalculator 
    def self.description 
    Spree.t(:shipping_flat_rate_per_order) 
    end 

    def compute_package(package) 
    self.preferred_amount 
    end 

    def available?(object) 
    object.currency == "USD" 
    end 
end 

und meine Datei config/initializers/spree.rb

# Configure Spree Preferences 
# 
# Note: Initializing preferences available within the Admin will overwrite any changes that were made through the user interface when you restart. 
#  If you would like users to be able to update a setting with the Admin it should NOT be set here. 
# 
# Note: If a preference is set here it will be stored within the cache & database upon initialization. 
#  Just removing an entry from this initializer will not make the preference value go away. 
#  Instead you must either set a new value or remove entry, clear cache, and remove database entry. 
# 
# In order to initialize a setting do: 
# config.setting_name = 'new value' 
Spree.config do |config| 
    # Example: 
    # Uncomment to stop tracking inventory levels in the application 
    # config.track_inventory_levels = false 
end 

Spree.user_class = "Spree::User" 

config = Rails.application.config 
config.spree.calculators.shipping_methods << Spree::Calculator::Shipping::MyOwnCalculator 

der Fehler ist dies:

Unable to autoload constant Spree::Calculator::Shipping::MyOwnCalculator, expected /home/davi/dev/attsalaoruby/app/models/spree/calculator/shipping/my_own_calculator.rb to define it (LoadError) 

und mein Stack-Trace ist auf diese Weise

/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:512:in `load_missing_constant': Unable to autoload constant Spree::Calculator::Shipping::MyOwnCalculator, expected /home/davi/dev/attsalaoruby/app/models/spree/calculator/shipping/my_own_calculator.rb to define it (LoadError) 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:203:in `const_missing' 
    from /home/davi/dev/attsalaoruby/config/initializers/spree.rb:21:in `<top (required)>' 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load' 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load' 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/engine.rb:648:in `block in load_config_initializer' 
    from /home/davi/.rvm/gems/[email protected]/gems/activesupport-5.0.1/lib/active_support/notifications.rb:166:in `instrument' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/engine.rb:647:in `load_config_initializer' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/engine.rb:611:in `each' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/engine.rb:611:in `block in <class:Engine>' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `instance_exec' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `run' 
    from /home/davi/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/initializable.rb:55:in `block in run_initializers' 
    from /home/davi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each' 
    from /home/davi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component' 
.... 

Antwort

0

Haben Sie definiert die Klasse innerhalb Modul wie folgt aus: module Spree module Calculator::Shipping class MyOwnCalculator < Spree::ShippingCalculator ... end end end

+0

Dank für die Hilfe, die ich ändern, um Ihren Code versuchen, aber jetzt Fehler ist diese '' 'Rechner ist kein Modul (Typeerror) '' ' –

+0

Es tut mir leid, Spree bereits Rechner als eine Klasse definiert. Ich habe die Antwort bearbeitet. –

+0

noch einmal, ich habe versucht, den Code zu ändern und jetzt ist der Fehler das '' 'undefinierte Methode' << 'für nil: NilClass (NoMethodError) '' ' –

Verwandte Themen