Nano Hash - криптовалюты, майнинг, программирование

Заменить строку с двойными кавычками на простую кавычку

Я использую 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

Ответы:


1

То, что вы ищете, вероятно, не двойные кавычки в одинарные кавычки, а этот помощник: https://apidock.com/rails/ActionView/Helpers/JavaScriptHelper/escape_javascript

Это позволит избежать двойных и одинарных кавычек.

"data-item-price" => j(p.price.to_json),
30.12.2017
  • Использование помощника j (или escape_javascript) возвращает data-item-price="{\"usd\":20,\"eur\":22}", который Snipcart больше не понимает. В консоли отображается ошибка Uncaught SyntaxError: Unexpected token N in JSON at position 0. 30.12.2017
  • data-item-price="{\"usd\":20,\"eur\":22}" мне кажется, что теперь он должен быть допустимым атрибутом json. Может ошибка на приемной стороне? 03.01.2018
  • Также в выходной строке нет N, как предполагает сообщение об ошибке. Так что, может быть, сейчас ошибка возникает из-за чего-то другого? 03.01.2018
  • В настоящее время я ищу поддержку Snipcart, попробуйте все, чтобы решить проблему. JSON понимается корзиной с использованием p.price.to_json.to_s или p.price.to_json.safe_html, но не обратным вызовом Snipcart при проверке заказа. 04.01.2018
  • Хорошо, проблема была со Snipcart, поэтому оба решения (ваше и krawitz) сработали после исправления ошибки синтаксического анализа. Спасибо ! 06.01.2018

  • 2

    Это работает ?

    def snipcart_button(p, text)
      content_tag(:button, text, {
        class: 'snipcart-add-item',
        data: {
          'item-id': p.id,
          'item-price': p.price.to_json.html_safe,
          'item-name': p[locale].name,
          'item-max-quantity': p.max_quantity,
          'item-url': snipcart_product_url(p),
          'item-image': p.image
        }
      })
    end
    

    (Очень) некрасивый способ:

    def snipcart_button(p, text)
      content_tag(:button, text, {
        class: 'snipcart-add-item',
        data: {
          'item-id': p.id,
          'item-price': '',
          'item-name': p[locale].name,
          'item-max-quantity': p.max_quantity,
          'item-url': snipcart_product_url(p),
          'item-image': p.image
        }
      }).sub(/(data-item-price=)""/, "\\1'#{p.price.to_json.html_safe}'").html_safe
    end
    
    31.12.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..