我在狂欢电子商务中更改了货币,现在我收到以下错误:
NoMethodError in Spree::OrdersController#populate
undefined method `+' for nil:NilClass
Extracted source (around line #116):
114 self.currency = currency
115 self.price = variant.price_in(currency).amount +
116 variant.price_modifier_amount_in(currency, opts)
117 else
118 self.price = variant.price +
variant.price_modifier_amount(opts)
所以我想重写OrdersController
我看了这个:
https://guides.spreecommerce.com/developer/logic.html
但我仍然感到困惑 - 我在哪里可以找到这个orderscontroller的初始代码?
答案 0 :(得分:0)
问题不在于狂欢控制器。问题是:
variant.price_modifier_amount_in(currency, opts)
正在返回nil
个实例。这就是你得到的原因:
undefined method `+' for nil:NilClass
答案 1 :(得分:0)
我在狂欢电子商务中更改了货币,现在我收到以下错误:
variant.price_modifier_amount_in(currency,opts)肯定会返回零。因此,您更改货币的方式是打破系统,尝试调试它。
所以我想重写OrdersController 如果你想重写部分OrdersController,你应该使用deface https://github.com/spree/deface
例如,您可以将order_controller_decorator.rb添加到app / controllers / spree / 使用以下代码
def update
if @order.contents.update_cart(order_params)
respond_with(@order) do |format|
format.html do
if params.has_key?(:checkout)
@order.next if @order.cart?
redirect_to checkout_state_path(@order.checkout_steps.first)
else
redirect_to cart_path
end
end
end
else
respond_with(@order)
end
end
此代码仅更改/覆盖更新功能。
如果要替换控制器中的所有内容,请在app / controllers / spree /中创建orders_controller.rb文件 然后添加您的代码。您可能希望参考original source code for order_controller