2012-07-15 47 views
0

的Rails 3.2.3Rails和AJAX - 將值傳遞給局部視圖

我需要通過點擊使用AJAX鏈接插入一個表中的許多行。它工作完美,但有一個問題。當我將值@paged_photo傳遞給partial時,它就是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; #there 3個TD的每一行 #@ paged_photos爲null這裏出於某種原因

<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 %>'); 

在此之後,獲得paged_photoshome/_test_partial.html.erb

如果成功,你就必須修改home/index.html.erb這樣

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

PS:我不明白在home/test_method.js.erb<%=j之前使用#。這只是一個錯字還是故意的?

+0

而我如何在部分訪問它? '<%=:paged_photos%>'不起作用。 – Alexandre 2012-07-15 07:44:54

+0

其實,沒有必要去做你寫的東西。我可以在控制器方法中定義一個變量@my_var並在部分 – Alexandre 2012-07-15 07:49:27

+0

@AlexMaslakov中訪問它,您可以簡單地訪問視圖中的「paged_photos」變量。例子'<%= paged_photos%>'。你對'@ my_var'部分是正確的,但是我懷疑它是在通過Ajax呈現時傳遞的。 – 2012-07-15 08:37:21