【问题标题】:Creating Shipping Method in spree from backend从后端疯狂创建运输方式
【发布时间】:2018-01-14 15:00:28
【问题描述】:

我想从后端创建一个狂欢的运输方法,从前端我能够实现它。但是当我运行这个时在后端

Spree::ShippingMethod.create(name: "Name 1", zone_id: 1).errors.full_messages

我遇到错误

["Calculator can't be blank"] 似乎需要以某种方式创建 Spree::Calculator。我是 Spree 的初学者,任何帮助都会有所帮助。

【问题讨论】:

  • 如果你指定你正在使用的spree的版本会很好

标签: ruby-on-rails spree


【解决方案1】:

所以,你需要指定一个Calculator

Spree 附带一些计算器:

  • Spree::Calculator::DefaultTax
  • Spree::Calculator::Shipping::FlatRate

您也可以按照here 的说明创建一个,然后您可以通过这种方式创建一个ShippingMethod

Spree::ShippingMethod.create(name: "Name 1", calculator: Spree::Calculator.first) 或任何你想要的Calculator

【讨论】:

  • 我们不能在创建运输方式时直接指定计算器,因为它们是受保护的属性。我们必须这样做,zone = Spree::Zone.find_by_name("North America") shipping_method = Spree::ShippingMethod.new(name: "Pickup from Market", zone_id: zone.id) shipping_method.calculator_type = "Spree::Calculator::FlatRate" shipping_method.save!
  • 是的,我想我们正在使用不同版本的spree。我正在使用3.4.4,你的代码给了我ActiveModel::UnknownAttributeError: unknown attribute 'zone_id' for Spree::ShippingMethod,我的工作;)
【解决方案2】:

正确的方法是:-

zone = Spree::Zone.find_by_name("North America")
shipping_method = Spree::ShippingMethod.new(name: "Pickup from Market", zone_id: zone.id)
shipping_method.calculator_type = "Spree::Calculator::FlatRate"
shipping_method.save!

我们可以指定任何类型的计算器来代替calculator_type。因为我想要Flate Rate,所以我使用了这个。

【讨论】:

  • 我得到了ActiveModel::UnknownAttributeError: unknown attribute 'zone_id' for Spree::ShippingMethod in spree 3.4.4
猜你喜欢
  • 2021-10-09
  • 2012-06-08
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2018-01-23
相关资源
最近更新 更多