2009-09-16 3 views
4

몇 가지 옵션으로 선택 메뉴가 있습니다.ActionView Helpers를 사용하여 observe_field를 가로 챕니다.

 <p> 
    <%= f.label :reason %><br /> 
    <%= f.select :reason, Confirmation.reasons.collect {|p| [ p[:name], p[:id] ] }, { :include_blank => true } %> 
    </p> 

마지막으로 ID가 "5"이고 이름이 "기타"입니다.

다른 사용자가 div id를 사용하여 숨겨진 text_area를 원한다면 = "other"를 입력하면 사용자가 입력 할 수 있습니다 ...

어떻게하면됩니까?

 <%= link_to_function "Show me other" do |page| 
    page[:other].toggle 
    end %> 

선택할 수 있지만 선택 상자의 "기타"선택시 표시하고 싶습니다. 이것이 observe_field의 일입니까?

+0

* 도덕적 영향?! ;-) –

+0

하지만 observe_field는 ajax를 사용합니까? 클라이언트 측만 동등한 것일 것입니까? – holden

+0

<% = f.select : reason, Confirmation.reasons.collect {| p | [: onchange => "$ ('otherform').(); {: name}, p [: id]]}, {: include_blank => true} } %> 전체 양식에 적용됩니다. – holden

답변

3

당신 자신의 대답은 괜찮지 만 나중에 참조 할 경우 observe_field은 Ajax 호출을 할 필요가 없습니다. :function을 사용하여 로컬로 실행되는 JavaScript 코드를 지정할 수 있습니다.

<%=observe_field 'reason', :frequency => 1, 
    :function => "if ($('reason').value == '5') { $('otherform').show(); } else { $('otherform').hide(); }" %> 
+0

오, 나는 너의 것을 좋아한다. 감사! – holden

2
<%= f.select :reason, Confirmation.reasons.collect {|p| [ p[:name], p[:id] ] }, { :include_blank => true }, { :onchange => "if (this.value == '5') { $('otherform').show(); }" } %> 

제작!