【发布时间】:2016-03-27 19:51:36
【问题描述】:
我正在开发我的 RoR4 应用程序,其中包含 Solidus gem。当我试图覆盖其前端的 checkout_controller#update 方法时(位于 here)。
我根据Spree's documents覆盖了控制器,但它给了我一个uninitialized constant OrderUpdateAttributes的错误。
CheckoutController#update 命名为/app/controllers/spree/checkout_controller_decorator.rb
Spree::CheckoutController.class_eval do
def update
if OrderUpdateAttributes.new(@order, update_params, request_env: request.headers.env).apply
@order.temporary_address = !params[:save_user_address]
success = if @order.state == 'confirm'
@order.complete
else
@order.next
end
if !success
flash[:error] = @order.errors.full_messages.join("\n")
redirect_to(checkout_state_path(@order.state)) && return
end
if @order.completed?
@current_order = nil
flash.notice = Spree.t(:order_processed_successfully)
flash['order_completed'] = true
redirect_to completion_route
else
redirect_to checkout_state_path(@order.state)
end
else
render :edit
end
end
我需要重写此方法,以便在订单完成后(结帐后)执行一些操作。我是否缺少导致此错误的东西?还是以其他方式执行操作?
【问题讨论】:
标签: ruby-on-rails-4 overriding e-commerce spree