Spree deface覆盖教程

时间:2013-12-23 06:35:41

标签: ruby-on-rails ruby-on-rails-4 spree

我正在关注Spree deface覆盖开发人员指南:http://guides.spreecommerce.com/developer/deface_overrides_tutorial.html

我的代码与他们的代码完全匹配,但我一直收到此错误。我环顾四周,但我没有看到其他任何人遇到这个问题或任何类似问题:

Spree的未定义方法`content_tag':模块

我正在运行Rails 4.0.2和ruby 1.9.3(可能没有为rails 4更新教程?)

这是我的代码:

应用程序/重写/ add_sale_price_to_product_edit.rb

Deface::Override.new(:virtual_path => 'spree/admin/products/_form',
  :name => 'add_sale_price_to_product_edit',
  :insert_after => "erb[loud]:contains('text_field :price')",
  :text => "
    <%= f.field_container :sale_price do %>
      <%= f.label :sale_price, raw(Spree.t(:sale_price)) %><span>*</span>
      <%= f.text_field :sale_price, :value =>
        number_to_currency(@product.sale_price, :unit => '') %>
      <%= f.error_message_on :sale_price %>
    <% end %>
   ")

应用程序/模型/礼包/ product_decorator.rb

module Spree
  Product.class_eval do
    delegate_belongs_to :master, :sale_price
  end
end

1 个答案:

答案 0 :(得分:6)

您收到错误是因为未指定Spree.t(:sale_price)的翻译。这是失败的,因为Rails 4.0.2做了一些changes to the I18n API 。你有几个选择。

  1. 为缺失的标记添加翻译,并记住此content_tag问题是由这个疯狂的错误造成的。
  2. 降级到Rails 4.0.0(不推荐)
  3. 将狂欢升级到2-1稳定分支(或等到2.1.4发布)
  4. this change应用于您当地的Spree安装。它应该纠正这个问题。
  5. 任何这些都应该让你再次工作。