我正在用 Deface 替换一些 Spree 核心模板代码,并且在我尝试使其更加自定义之前一切正常。
Deface::Override.new(
:virtual_path => "spree/shared/_products",
:replace => "span.price",
:text => "<%= link_to truncateproduct.display_price + '<span class=\"purchase-suggestion\">BUY NOW</span>', :length => 20), product, :class => 'price selling', :itemprop => \"price\", :title => product.name + ': ' + product.display_price %>",
:name => "product_price"
)
上面我的目标是使价格文本成为一个链接,并且还包括一个包裹在跨度中的“立即购买”文本,以用于个人造型目的。
这样呈现:
$15.99<span class="purchase-suggestion">BUY NOW</span>
如何让 Deface 评估 HTML 而不是编写字符串?
我尝试通过制作两个不同的 Deface 文件分两步执行此操作,一个是我将跨度交换为链接,另一个是我将跨度添加到:insert_bottom。在我看来,不可能使用 Deface 两次更改同一个元素 - 这是正确的吗?
解决方案 感谢您在频道中的回答和对话。这是解决方案:
Deface::Override.new(
:virtual_path => "spree/shared/_products",
:replace => "span.price",
:text => "<%=
link_to ('<span>' + product.display_price + '</span> <span class=\"purchase-suggestion\">BUY NOW</span>').html_safe, product,
:class => 'price selling',
:itemprop => 'price',
:title => product.name + ': ' + product.display_price
%>",
:name => "product_price"
)
.truncate
无缘无故被使用,.html_safe
完成了这项工作。