2009-11-19 2 views
0

일부 변수가 지역 변수에서 수신되지 않음

내 컨트롤러에 내가 가지고 :

- @items.each do |item| 
    = render :partial => 'item', :locals => { :item => item, :draggable => true } 

그리고 item 부분 :

%span{:id => "item_#{item.id}", :class => 'item'} 
    = item.name 
    - if defined?(draggable) 
    = draggable_element "item_#{item.id}", :revert => true 

defined?(draggable)false 반환하므로이 작동하지 않습니다. draggable_element는 절대로 렌더링되지 않습니다.

나머지 부분 렌더링 때문에 item:locals를 통과한다는 것을 알고 있습니다. 읽기 부분을 변경하면 :

- if defined?(item) 
    = draggable_element "item_#{item.id}", :revert => true 

그러면 draggable_element가 렌더링됩니다.

모든 아이디어:draggable이 부분으로 전달되지 않는 이유는 무엇입니까?

답변

4

defined?(draggable) 대신 local_assigns[:draggable]을 사용하십시오. "defined? var을 사용한 테스트는 작동하지 않습니다."

+0

으로 정의 되었습니까? (var)는 다른 모든 인스턴스에서 실제로 작동하지만 분명히 갈 길이 아닙니다! 감사. – chrishunt

0

나는 이것을 부분의 상단에 던져서이 문제를 해결했습니다. 내가 너무 오래 내가 드래그 존재 전무 및 전달되고 있지 않습니다 사이의 차이를 만들려고하지 않는

<% if draggable %> 

을 수행 할 수 있습니다

<% draggable ||= nil %> 

.

관련 문제