RoR의 자바 스크립트 및 HAML에 변수 값 삽입
ZenDesk를 사용하기 위해 다음과 같은 기능이 있습니다. 다음과 같이 current_user 세부 정보를 양식에 삽입하고 싶습니다. (이것은 html.haml 템플릿에서 가져온 것입니다). 그러나 나는 이것을 작동시키는 방법을 알 수 없습니다.
:javascript
if (typeof(Zenbox) !== "undefined") {
Zenbox.init({
dropboxID: "xxxxx",
url: "xxxxx.zendesk.com",
tabID: "support",
tabColor: "black",
tabPosition: "Left",
requester_name: =current_user ? "#{current_user.first_name} #{current_user.last_name}" : "" ,
requester_email: =current_user ? "#{current_user.email}" : "" ,
hide_tab: true
});
}
요컨대, haml의 : javascript 요소에 rails 변수를 어떻게 주입합니까?
이것은 즉 작동합니다. 모든 인라인 루비를 안에 넣으십시오 #{}
.
requester_name: "#{current_user.first_name + ' ' + current_user.last_name if current_user}",
requester_email: "#{current_user.email if current_user}",
Direct #{}
는 간단한 문자열에 대해 작동하지만 일반적으로 가장 확장 가능하고 안전한 솔루션은 아닙니다.
예를 들어 Ruby의 리터럴 백 슬래시는 자바 스크립트에서 문제를 일으켜 개행 문자로 해석됩니다.
- a = "\\n"
:javascript
'#{ a }' !== "\\n"
에서 이 멋진 레일 캐스트 , 다음 방법을 사용할 수 있습니다 :
escape_javascript
별칭 : j
.
문자열에서만 작동합니다.
백 슬래시 이스케이프와 같이 자바 스크립트 문자열에서 특별한 의미를 가질 수있는 문자를 자바 스크립트 문자열 리터럴 따옴표 안에 넣기에 적합한 형식으로 이스케이프합니다.
html_safe
입력 상태를 유지 하므로 html_safe
그렇지 않으면으로 <
이스케이프되는 특수 HTML 문자가 필요합니다 <
.
- a = "\\n<"
:javascript
'#{ j(a) }' === '\\n<'
'#{ j(a).html_safe }' === '\\n<'
to_json + html_safe
JSON은 거의 Javascript 객체 리터럴 표기법의 하위 집합 이기 때문에 작동 합니다 .
해당 데이터 유형의 JSON 조각으로 변환되는 문자열, 배열 및 정수를 포함한 모든 해시 개체에서 작동합니다.
- data = { key1: 'val1', key2: 'val2' }
:javascript
data = #{ data.to_json }
data.key1 === 'val1'
data.key2 === 'val2'
데이터 속성
속성에 값을 추가하고 Javascript DOM 작업으로 검색합니다.
content_tag
도우미 와 함께하면 더 좋습니다.
= content_tag 'div', '', id: 'data', data: {key1: 'val1', key2: 'val2'}
:javascript
$('#data').data('key1') === 'val1'
$('#data').data('key2') === 'val2'
곤
업무에 특화된 라이브러리 : https://github.com/gazay/gon
아마도 가장 강력한 솔루션 일 것입니다.
Gemfile :
gem 'gon'
제어 장치:
gon.key1 = 'val1'
gon.key2 = 'val2'
Layout app/views/layouts/application.html.erb
:
<html>
<head>
<meta charset="utf-8"/>
<%= include_gon %>
View:
:javascript
gon.key1 === 'val1'
gon.key2 === 'val2'
ReferenceURL : https://stackoverflow.com/questions/4708369/injecting-variable-values-into-javascript-and-haml-in-ror
'IT이야기' 카테고리의 다른 글
PreparedStatements 및 성능 (0) | 2021.04.18 |
---|---|
GetView VS 사용자 지정 CursorAdapter의 BindView (0) | 2021.04.18 |
linq에서 .edmx와 .dbml 파일의 차이점 (0) | 2021.04.18 |
Rails 자산 파이프 라인 : 모든 / vendor / assets / javascripts /?를 포함하는 표준 방법 (0) | 2021.04.18 |
T-SQL : 테이블에 없는 값 목록에서 값을 선택하는 방법 (0) | 2021.04.18 |