2013-02-25 3 views
0

저는 상당히 새로운 웹 개발을하고 있으며 레일즈 애플리케이션의 모든 부분이 어떻게 상호 작용하는지에 대해 머리를 감싸는 데 문제가 있습니다. 나는 레일을 사용하고있다. 3.2자바 스크립트와 레일스 상호 작용

기본적으로 내가하고 싶은 것은 고유 한 형식의 데이터가 포함 된 원격 웹 사이트에서 응답을 검색하는 것이다. 이 데이터는 중요한 부분을 추출하기 위해 파싱되어야합니다. 그런 다음이 부분은 내 페이지에서 부분을 생성하는 데 사용해야합니다. 컨트롤러의

는 I 사용했다 :

require 'net/http' 
@result = Net::HTTP.get(URI.parse("http://remote.website.toget.data")); 

페이지 후 처음 파셜 생성하지 않고 렌더링된다. 이후 나는 내가 필요로하는 데이터를 배열로 @result을 구문 분석하는 스크립트 태그를 사용

var myData='<%= @result %>'; 
var myDataCleaned = myData.replace(/%20/g, " "); 
while(gameTeams = regexGameTeams.exec(myDataCleaned)){ 
myTeams[count] = new Array(); 
myTeams[count][0] = gameTeams[1]; 
myTeams[count][1] = gameTeams[2]; 
count++; 
} 

지금 나는 내 파셜을 생성하기 위해이 데이터를 사용할 수있는 방법에 관한 혼란 스러워요. 조사한 결과에 따르면 로컬로 전달하여 < % = render 'partial'%> 호출이 불가능하므로이 작업을 수행하는 방법은 무엇입니까? 내 생각 엔이 잘못된 방법으로 갔고 페이지를 렌더링하기 전에 구문 분석을 수행 한 다음 컨트롤러를 통해 결과를 전달해야하지만,이를 파악하지 못하는 것 같습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 크게 감사하겠습니다 !!

답변

0

당신이 맞다면 루비의 데이터 (원격 호출을하는 컨트롤러에서)를 파싱하고 추출 된 데이터에서 부분 데이터를 빌드해야합니다.
데이터의 형식은 무엇입니까? 경우에

당신은 parsed_data = JSON.parse(data)

를 사용할 수 있지만 다른 형식에있는 경우에도 루비는 비교적 쉽게 분석하게, json입니다.

+0

이것은 더 의미가 있습니다! 안타깝게도 데이터는 텍스트 문자열 일 뿐이지 만 이미 필요한 것을 풀 수있는 정규 표현식을 가지고 있습니다. 루비에 맞춰야 할 것입니다. 감사! 추신 일단 이것이 예상대로 작동한다는 것을 확인하면 나는 당신을 받아 들인 대답으로 선택합니다! –

0

당신의 목표는 당신이 출력 JS 코드를 같이하게 할 거라고 부분의 내부에 다음 부분에서 내 자바 스크립트에 레일/루비 변수에 대한 액세스를 제공하는 것이었다 경우

some_js_var = <%= some_local_ruby_var_that_is_in_scope %> 

또는

some_js_var = <%= @some_instance_ruby_var_that_is_in_scope %> 

요청을 서버에 다시 보내지 않고 Javascript 변수를 Rails 부분으로 전달할 수 없으므로 서버에서 응답 구문 분석 등을 수행하거나 에 구문 분석을 수행 할이있는 경우 자바가 어떤 이유로 든 n 당신은 JS 측에서 JSON 요청을 처리하기 위해 Rails 측에서 일부 JSON 서비스를 설정 하겠지만 약간 어리석은 일이다.

+0

내 생각을 잘못 해석했을 수도 있습니다. 스크립트 태그 내에서 <% = render 'partial %>을 호출하기 때문에 변수를 전달할 방법을 찾을 수 없습니다. 컨트롤러에서 전달할 수 있음을 알지만, 이미 볼 수 있기 때문에 가능한 것으로 생각하지 않습니다. 어쨌든 답변 주셔서 감사합니다! –

+0

내 대답이 업데이트되었습니다. 설명을 주셔서 감사합니다 - 당신의 질문이 질문 제목과 일치하지 않는다고 생각하고 있었는데 ... :) –