私はMiddlemanとSnipcartを使用して電子商取引プロジェクトを開発しています。私は複数通貨を使用する必要があります。Snipcartのドキュメントでは、購入ボタンにdata-item-price
と{"usd": 20, "eur": 25}
のようなJSON配列を設定するだけでいいとのことです。購入ボタンを置くためのデータセットが他にもあるので、私はヘルパーを作ることにしました。二重引用符の文字列を一重引用符で置き換えます。
このヘルパーは正確に私が望むものを返しますが、データ項目価格は二重引用符で囲まれ、一重引用符ではありません。現時点では、コードはdata-item-price="{"usd":20,"eur":22}"
として理解され、data-item-price='{"usd": 20, "eur": 22}'
ように私はこの<button data-item-price='{"usd":20,"eur":22}'>Buy</button>
で<button data-item-price="{"usd":20,"eur":22}">Buy</button>
を変換する必要はありません。あなたが探しているものを
def snipcart_button (p, text)
args = {
"class" => "snipcart-add-item",
"data-item-id" => p.id,
"data-item-price" => p.price.to_json,
"data-item-name" => p[locale].name,
"data-item-max-quantity" => p.max_quantity,
"data-item-url" => snipcart_product_url(p),
"data-item-image" => p.image
}
content_tag :button, args do
text
end
end
'j'ヘルパー(または' escape_javascript')を使用 'データ項目価格= "{\" USDの\"を返し:20 、\ "eur \":22} "、Snipcartはもう理解しません。 'Uncaught SyntaxError:JSONの位置0の予期しないトークンN 'というエラーがコンソールに表示されます。 –
'data-item-price =" {\ "usd \":20、\ "eur \":22} "これは有効なjson属性であるように見えます。エラーが受信側にある可能性がありますか? –
また、エラーメッセージが示唆する出力文字列に 'N 'もありません。だから、エラーは今他の何かから来ているのでしょうか? –