0

我正在尝试max使用 Deface 为 Spree 部分添加一个值。

Deface::Override.new(
  :virtual_path => 'spree/products/_cart_form',
  :name => 'modify_max_add_to_cart',
  :replace_contents => ".add-to-cart",
  :text => "
          <%= number_field_tag (@product.variants_and_option_values.any? ? :quantity : 'variants[#{@product.master.id}]\'),
            1, :class => 'title', :min => 1, :max => @product.limit_qty %>
          <%= button_tag :class => 'large primary', :id => 'add-to-cart-button', :type => :submit do %>
            <%= Spree.t(:add_to_cart) %>
          <% end %>
  ")

问题是,它似乎出错了,因为那里有实例变量。

undefined method master for nil:NilClass

我该如何正确地做到这一点?

4

1 回答 1

0

当您更改此行时

<%= number_field_tag (@product.variants_and_option_values.any? ? :quantity : "variants[#{@product.master.id}]")

要使用单引号,您破坏了这段代码中出现的变量插值:

"variants[#{@product.master.id}]"

您可以通过将行更改为:

<%= number_field_tag (@product.variants_and_option_values.any? ? :quantity : \"variants[#{@product.master.id}]\")

实际上,您应该考虑使用部分替换,而不是使用文本替换。多行代码就更清楚了。

于 2013-09-03T20:58:53.363 回答