我正在学习rails,我喜欢通过练习创造真实的东西来学习。
我在尝试创建一个新的计算器时会遇到一些问题,以便在狂欢商业的运输区域使用。
遵循本文档教程。
http://guides.spreecommerce.org/developer/calculators.html#creating-a-new-calculator
按照教程我在这个目录中创建了这个类。
app/models/spree/calculator/shipping/my_own_calculator.rb
我的课就是这样
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
和我的档案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
错误是这样的:
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)
我的堆栈跟踪是这样的
/.rvm/gems/ruby-2.3.0@5.0.0.1/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/ruby-2.3.0@5.0.0.1/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/ruby-2.3.0@5.0.0.1/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/engine.rb:648:in `block in load_config_initializer'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/activesupport-5.0.1/lib/active_support/notifications.rb:166:in `instrument'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/engine.rb:647:in `load_config_initializer'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/engine.rb:611:in `each'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/engine.rb:611:in `block in <class:Engine>'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `instance_exec'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `run'
from /home/davi/.rvm/gems/ruby-2.3.0@5.0.0.1/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'
....
答案 0 :(得分:0)
你是否在模块中定义了这样的类:
module Spree
module Calculator::Shipping
class MyOwnCalculator < Spree::ShippingCalculator
...
end
end
end