2014-04-17 1 views
0

뷰에 배치 될 때 작동하지만 코드가 도우미로 이동 될 때 렌더링되지 않는 코드 섹션이 있습니다. 서버에서 렌더링 호출을 표시하지만 브라우저에 출력이 없기 때문에 코드가 실행되고 있음을 압니다.도우미에서 호출 할 때 Rails 렌더 호출이 표시되지 않습니다.

(뷰 파일에 배치 할 때)이 작동

<% vidList = "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0" %> 
<% i=1 %> 
<% vidList.each do |v| %> 
    <%= render partial: 'loadvid', locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v } %> 
    <% i=i+1 %> 
<% end %> 

이되지 않습니다.

module VidsHelper 
    def loadvids(vidList) 
    i=1 
    vidList.each do |v| 
     render partial: 'loadvid', locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v } 
     i=i+1 
    end 
    end 
end 

는 내가 서버가 _loadvid.html.erb 4 번 렌더링 것을보고 있기 때문에이 방법이 호출되고 알고 말했듯이. 호출 중임

<% vidList = "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0", "ylLzyHk54Z0" %> 
<% loadvids vidList %> 

브라우저에서 소스를 볼 때 아무 것도 렌더링되지 않습니다.

+0

시도가 <% = loadvids vidList %> – dostu

+0

이미 그것을 시도했다. vidlist 배열 내용을 보여 주며 작동하지 않습니다. –

답변

0

내가 알 수있는 한 < %> 내의 모든 전화는 표시되지 않습니다. 그러나 < % = %> 내의 함수를 호출하면 렌더 출력이 아닌 메서드의 출력이 표시됩니다. 볼 수있는 유일한 해결책은 렌더링 출력을 캡처 한 다음 다시 렌더링하는 것입니다. 뷰에서

: 현재의 작업 코드는 이것이다 도우미에서

<%= render inline: loadvids(vidList) %> 

:

def loadvids (vidList) 
    i=1 
    capture = [] 
    vidList.each do |v| 
     capture.push render partial: "loadvid", locals: {vidId: i.to_s, divId: "vid"+i.to_s, vidURL: v } 
     i=i+1 
    end 
    capture.join 
end 
+0

이 솔루션이 효과가있는 경우 사용자 본인의 답변을 수락 할 수 있습니다. – Quinn