【问题标题】:Spree::OrderPopulator accessing outside of storeSpree::OrderPopulator 访问商店外
【发布时间】:2014-07-15 13:08:09
【问题描述】:

在 Rails 4.1 上 .. 是 Spree 2-3-stable 的新手,并尝试各种事物。我的测试商店运行良好,现在我将尝试将其集成到我的预订网站应用程序中。

在我的预订日历上,我希望用户点击预订链接并让该链接自动填充他们的购物车,然后直接显示他们的购物车。

所以假设我有一个 spree 产品,并且数据库中存在一个变体,并且 current_user 已登录(即 spree_current_user 存在).. 我认为这是可能的,但似乎它甚至不会创建 populator。

class BookingsController < ApplicationController
  def add_booking_to_cart        
    populator = Spree::OrderPopulator.new Spree::Order.current_order(create_order_if_necessary: true), current_currency
    # .. get variant related to booking
    # .. add varient to populator
  end
  #... rest of bookings controller
 end

Errors out with:
NoMethodError - undefined method `current_order' for #<Class:0x00000007d4fc68>:

我正在尝试做与 Will here 类似的事情,但我得到了错误当前订单对象上的未定义方法。我对代码的理解是它应该在必要时创建一个新订单,即如果一个订单不存在。不知道在这里做什么?任何指针都会非常感谢。

https://github.com/spree/spree/blob/2-3-stable/frontend/app/controllers/spree/orders_controller.rb#L46

【问题讨论】:

    标签: ruby-on-rails spree


    【解决方案1】:

    为此,您的控制器需要扩展 Spree::StoreController

    class BookingController < Spree::StoreController
    

    这是在 Spree 中定义方法的地方: https://github.com/spree/spree/blob/master/core/lib/spree/core/controller_helpers/order.rb

    另外,您可能需要before_filter :set_current_order

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多