우리는 json을 ERB의 데이터 속성으로 렌더링하고 있습니다. 예 :
location.html.erb
<div data-location="<%= render 'location_json' %>">
location_json.erb
<%= @location.to_json(
only: [:id, :name, :lat, :lng],
method: [:display_name]) %>
렌더링 된 HTML은 다음과 같습니다.
<div data-location="{"id":16,"lat":"35.688195","lng":"-82.564652","name":"Mountain"}">
그러나 나는 그것을 더 읽기 쉽게하고 싶다.
<div data-location='{"id":16, "lat":35.688195, "lng":-82.564652, "name":"Mountain"}'
>
ERB 또는 to_json에게 큰 따옴표를 이스케이프하는 대신 작은 따옴표로 렌더링하도록 지시하는 방법이 있습니까?
읽을 수있는 json을 HTML 데이터 속성으로 렌더링 할 수 있습니까? 읽을 수 있다는 것은 최소한의 탈출을 의미합니다.
html 페이지를 깨지 않고 데이터 속성에서 이스케이프 처리되지 않은 JSON을 사용할 수 없습니다.
그러나 Rails / ERB 기본값보다 더 읽기 쉬운 이스케이프 된 JSON을 사용할 수 있습니다.
기본적으로 ERB는 큰 따옴표를 이스케이프하므로 JSON을 특히 읽기 어렵습니다. 대신
helper.rb
def my_html_escape(s)
{ '&' => '&', '>' => '>', '<' => '<', "'" => ''' }.each do |k,v|
s = s.gsub(k,v)
end
s
end
location.html.erb
<div data-location='<%= raw my_html_escape(@location.to_json) -%>'>
생산하다
<div data-location='{"id":16, "lat":35.688195, "lng":-82.564652, "name":"Mountain"}'>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다