首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在deface和Spree中插值实例变量?

如何在deface和Spree中插值实例变量?
EN

Stack Overflow用户
提问于 2013-08-31 07:27:35
回答 1查看 211关注 0票数 0

我正在尝试使用Deface在partial for Spree中将max值添加到此表单。

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2013-09-04 04:58:53

当您更改此行时

代码语言:javascript
复制
<%= number_field_tag (@product.variants_and_option_values.any? ? :quantity : "variants[#{@product.master.id}]")

为了使用单引号,您打破了下面这段代码中出现的变量插值:

代码语言:javascript
复制
"variants[#{@product.master.id}]"

您可以通过将行更改为:

代码语言:javascript
复制
<%= number_field_tag (@product.variants_and_option_values.any? ? :quantity : \"variants[#{@product.master.id}]\")

实际上,与其使用文本替换,不如考虑使用部分替换。使用多行代码会更清晰一些。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18542862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档