2012-07-15 3 views
0

레일 3.2.3레일 및 아약스 - 값을 부분 뷰로 전달

AJAX를 사용하여 링크를 클릭하여 테이블에 많은 행을 삽입해야합니다. 완벽하게 작동하지만 문제가 있습니다. 부분에 값 @paged_photo을 전달하면 null이됩니다. 그러나 그것은 확실히 null이 아니며 데이터를 포함합니다.

# 홈/index.html.erb

<table id="photos_table"> 
    <%= render :partial => 'test_partial' %> 
</table> 
    <%= link_to "More photos", {:controller => "home", :action => "test_method" }, :remote => true %> 

# 홈/_test_partial.html.erb; 이 paged_photos @ 각 행 # 3 TD #there있는 것은 어떤 이유

<tr> 
<td> 
    <%= link_to :controller => 'photos', :action => 'show', :id=>@paged_photos[0].id do %> 
     <%=image_tag(@paged_photos[0].source)%> 
    <%end%> 
</td> 
<td> 
    <%= link_to :controller => 'photos', :action => 'show', :id=>@paged_photos[1].source do %> 
     <%=image_tag(@paged_photos[1].source)%> 
    <%end%> 
</td> 
<td> 
    <%= link_to :controller => 'photos', :action => 'show', :id=>@paged_photos[2].id do %> 
     <%=image_tag(@paged_photos[2].source)%> 
    <%end%> 
</td> 
</tr> 

# 홈/test_method.js.erb

$('#photos_table').append('# <%=j render :partial => 'test_partial'%>'); 

컨트롤러 여기를 널

def test_method 
     @paged_photos = get_photos   
     respond_to() do |format| 
      format.js 
     end 
    end 

테이블의 행을 삽입하려면 값을 partial로 전달하는 방법은 무엇입니까?

답변

1

home/test_method.js.erb에서 다음을 사용할 수 있습니까? 이 후

$('#photos_table').append('<%=j render :partial => 'test_partial', :paged_photos => @paged_photos %>'); 

, home/_test_partial.html.erb에 액세스 paged_photos. 그 작동하는 경우

, 당신은 당신의 home/index.html.erb

<%= render :partial => 'test_partial', :paged_photos => @paged_photos %> 

이 같은 PS를 수정해야 할 것이다 : 나는 home/test_method.js.erb<%=j 전에 #의 사용을 이해하지 못했다. 오타 또는 의도적 이었습니까?

+0

어떻게 부분적으로 액세스합니까? '<% = : paged_photos %>'가 작동하지 않습니다. – Alexandre

+0

사실, 당신이 쓴 것을 할 필요가 없습니다. 컨트롤러 메서드 내에서 @my_var 변수를 정의하고 부분적으로 액세스 할 수 있습니다. – Alexandre

+0

@AlexMaslakov 당신은 뷰에서'paged_photos' 변수에 액세스 할 수 있습니다. 예'<% = paged_photos %>'. '@ my_var' 부분에 대해 옳았지만 Ajax를 통해 렌더링하는 동안 전달되는지 여부는 의심 스럽습니다. –

관련 문제