2016-12-22 2 views
1

에 백 슬래시를 유지 :레일 JSON은 내가보기 양식이 라인을 가지고 문자열

<%= hidden_field_tag "ng_b2b_configuration[value][endpoints][][patterns][]", raw(".+\\\\.runsheet\\\\..+") %> 

는이 결과를 생성합니다 :

내가 정말 원하는 것이 아니다
"patterns":[".+\\.runsheet\\..+"] 

. 내 질문 내 DB에 저장 한 후 백 슬래시를 유지하는 방법입니다? "patterns":[".+\.runsheet\..+”]

을 나는이 함께 시도했습니다 : <%= hidden_field_tag "ng_b2b_configuration[value][endpoints][][patterns][]", raw(".+\\\\.runsheet\\\\..+"), class: "val_runsheet_all" %> 및 결과 : "patterns":[\".+\\.runsheet\\..+\”]

UPDATE 여기에 1

HTML 출력된다

내가 원하는 것을 정확히
<input type="hidden" name="ng_b2b_configuration[value][endpoints][][patterns][]" id="ng_b2b_configuration_value_endpoints__patterns_" value=".+\.runsheet\..+"> 
+0

하지만 Ruby (예 : ERB)의'. \ \ runsheet \ .. + "'는 '. +. runsheet .. +''를 말하는 복잡한 방법이므로 결과가 어떻게 끝나나요? 보고 있니? ''이 HTML에 보이는 것과''params''에 로그가 말하는 것을 포함시키는 것이 도움이 될 것입니다. 그리고 큰 따옴표로 묶인 루비 문자열'\\.'안에 백 슬래시 하나와 마침표가옵니다. –

+0

@muistooshort ops 죄송합니다. 위의 내 질문을 편집합니다. – AmirolAhmad

답변

1

value=".+\.runsheet\..+"은 결국 Ruby에서 '.+\.runsheet\..+'으로 끝날 것이므로 어딘가에서 혼란 스러울 것입니다. 당신이하는 일은 (속임수없이) 루비 나 JSON에서

".+\.runsheet\..+" 

과 같은 문자열을 줄 것입니다. 백 슬래시는 Ruby 큰 따옴표 붙은 문자열과 JSON 형식의 문자열 모두에서 특별한 의미가 있습니다. 어떤 사람도 .을 피하기 위해 백 슬래시가 필요하지 않으므로 둘 다 거기에 넣지 않습니다. 그러나 \은 Ruby 큰 따옴표 붙은 문자열과 JSON 모두에서 이스케이프 문자로 특별한 의미를 가지므로 \\\과 같이 보일 것입니다. 둘 다 특수 문자 인 \을 이스케이프 문자로 이스케이프 처리해야하기 때문입니다.

irb에 가서 말 :

puts ".+\.runsheet\..+" 

을 당신이 무엇을 얻을 참조하십시오. 다음과 같이 말하십시오.

puts ".+\\.runsheet\\..+" 

당신이 얻는 것을보십시오. 첫 번째는 당신에게 줄 것이다 :

.+.runsheet..+ 

와 두 번째 :

.+\.runsheet\..+ 

당신이 inspect가 사용할 탈출 피할 수 있도록 다음 몇 가지 to_json 호출 (다시 결과를 볼 수 puts을 사용하여 던질 수) 비슷한 일이 일어나는 것을 보게 될 것입니다.

+0

큰 설명에 감사드립니다. 이제 실제 백 슬래시가 아닌 이중 백 슬래시에 대해 이해합니다. 탈출 사물과 마찬가지입니다. 또한 여기에서 정보를 얻었습니다. http://stackoverflow.com/questions/14714081/cannot-keep-backslash-in-string-in-ruby-code – AmirolAhmad