2009-08-17 6 views
1

Ruby on Rails에서 인라인 RJS로 작업하고 selectedIndex 속성에 액세스하여 선택 옵션을 찾으려고합니다. 어떤 이유로이 기능을 사용할 수 없습니다.RJS의 요소 값 액세스

page['model_author_id'].selectedIndex = 5 

그러나 그것을 읽고 RJS 내에서 비교를 수행하는 것은 작동하지 않습니다 :

따라서, 예를 할당/selectedIndex 속성을 변경하는 것은 위대한 작품을 내가 디버그를했다

if page['model_author_id'].selectedIndex == 0 then xxx end 

Firebug에서 RJS가 다음 (잘못된) 코드를 생성하는 것으로 보입니다. -

$("model_author_id").selectedIndex().= = 0; 

그럼, 질문은 - 어떻게 RJS를 사용하여 페이지 요소의 값을 얻을 수 있습니까?

답변

2

RJS는 자바 스크립트 생성기이며 자바 스크립트는 클라이언트 측에 도달 할 때까지 실행되지 않습니다. 따라서 Ruby에서 여전히 select 옵션의 값을 결정할 수는 없습니다.

선택한 값에 "if"문을 사용하려면 Javascript로 수행해야합니다.

page << "if ($('model_author_id').selectedIndex() == 0) {" 
    page["model_author_id"].selectedIndex = 5 # or whatever you want here 
page << "}" 
+0

답변 ryanb에 감사드립니다. Rails 서적과 포럼에서이 답변을 찾을 수 없습니다. 실제로 RJS 초보자의 어려움은 저와 같이 차이점이 매우 미묘하다고 생각합니다. 예, RJS는 자바 스크립트 생성기입니다.하지만 Ruby를 JS로 변환하여 조건부/등을 생성 할 수없는 이유는 무엇입니까? – Vlad

+0

이것은 Ruby 언어의 제한 사항입니다. "="연산자는 메서드이며 동작을 재정의 할 수 있지만 "if"동작은 수행 할 수 없습니다. 자바 스크립트에 익숙하다면 RJS를 사용하지 않는 것이 좋습니다. 대신 javascript와 erb를 직접 섞어서 (index.js.erb와 같은 뷰 파일로). – ryanb