Порча Spree с использованием частичного в качестве источника

Я пытаюсь добавить поля в spree admin используя deface. Я следовал их руководству, но они вставляли HTML, используя строку. Я пытался переместить эту строку в html.erb файл и ссылка на источник как частичное, и получил следующую ошибку.

undefined method `empty?' for nil:NilClass

Примечание: все сделано в расширении веселья

Код из учебника, который работает:

# /overrides/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 => '[data-hook="admin_product_form_price"]',
  :text => "<%= f.field_container :sale_price do %>
    <%= f.label :sale_price, raw(Spree.t(:sale_price) + content_tag(:span, ' *')) %>
    <%= f.text_field :sale_price, :value =>
    number_to_currency(@product.sale_price, :unit => '') %>
    <%= f.error_message_on :sale_price %>
  <% end %>")

Частичное использование (не работает):

# /overrides/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 => '[data-hook="admin_product_form_price"]',
  :partial => 'simple_sale')


# /overrides/_simple_sale.html.erb
<div>
  <%= f.field_container :sale_price do %>
    <%= f.label :sale_price, raw(Spree.t(:sale_price) + content_tag(:span, ' *')) %>
    <%= f.text_field :sale_price, :value =>
    number_to_currency(@product.sale_price, :unit => '') %>
    <%= f.error_message_on :sale_price %>
  <% end %>
</div>

1 ответ

Я предполагаю, что вам нужно иметь частичное в папке представлений, а не в папке переопределений - /overrides для файлов.rb - партиалы и другие файлы представлений должны находиться в папке /views: /views/shared или что-то в этом роде,

Другие вопросы по тегам