一部のSpreeコアテンプレートコードをDefaceに置き換えていますが、もう少しカスタム化するまではすべてうまく機能します。
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を評価させるにはどうすればよいですか?
2つの異なるDefaceファイルを作成することにより、これを2つのステップで実行しようとしました。1つはリンクのスパンを交換するファイルで、もう1つはスパンを:insert_bottomに追加するファイルです。Defaceを使用して同じ要素を2回変更することはできないようですが、これは正しいですか?
解決策 チャネルでの回答と会話に感謝します。これが解決策です:
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
、仕事をしました。