Я использую Middleman и Snipcart для разработки проекта электронной коммерции. Мне нужно использовать мультивалютность, в документации Snipcart говорится, что мне просто нужно установить в моей кнопке покупки data-item-price
с массивом JSON, например {"usd": 20, "eur": 25}
. Есть и другой набор данных для кнопки покупки, поэтому я решил сделать помощника.
Этот помощник возвращает именно то, что я хочу, но цена элемента данных находится между двойными кавычками, а не между одинарными кавычками. На данный момент код понимается как 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>
.
Вот вспомогательная кнопка snipcart (купить):
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
) возвращаетdata-item-price="{\"usd\":20,\"eur\":22}"
, который Snipcart больше не понимает. В консоли отображается ошибкаUncaught SyntaxError: Unexpected token N in JSON at position 0
. 30.12.2017data-item-price="{\"usd\":20,\"eur\":22}"
мне кажется, что теперь он должен быть допустимым атрибутом json. Может ошибка на приемной стороне? 03.01.2018N
, как предполагает сообщение об ошибке. Так что, может быть, сейчас ошибка возникает из-за чего-то другого? 03.01.2018p.price.to_json.to_s
илиp.price.to_json.safe_html
, но не обратным вызовом Snipcart при проверке заказа. 04.01.2018