2017-12-29 7 views
0

전자 상거래 프로젝트를 개발하기 위해 중개인과 Snipcart를 사용하고 있습니다. Snipcart 문서에서는 복수 통화를 사용해야하며 과 같은 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>을 변환 할 필요가있다. https://apidock.com/rails/ActionView/Helpers/JavaScriptHelper/escape_javascript

이 단일 및 이중 따옴표를 이스케이프합니다

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 

답변

2

뭘 찾는 것은 아마 이중 따옴표로 인용하지만,이 도우미 : 여기

는 snipcart (구매) 버튼 도우미입니다 .

"data-item-price" => j(p.price.to_json), 
+0

는 = j' 도우미 (또는'escape_javascript'가)'데이터 항목 가격을 반환' "{\"달러 \ "를 사용 : 20 , \ "eur \": 22} ", Snipcart는 더 이상 이해하지 못합니다. 콘솔에 'Uncaught SyntaxError : JSON의 예상치 못한 토큰 N'오류가 표시됩니다. –

+0

'data-item-price = "{\"usd \ ": 20, \"eur \ ": 22}"이제는 유효한 json 속성이어야합니다. 어쩌면 오류가 수신 측에 있습니까? –

+0

또한 출력 문자열에 오류 메시지가 나타내는 'N'이 없습니다. 어쩌면 그 오류가 지금 다른 어떤 것으로부터 온 것일 수 있습니까? –

1

이 방법이 유용합니까?

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 
관련 문제