Rails和ajax - 将值传递给局部视图

时间:2012-07-15 05:45:07

标签: ajax ruby-on-rails-3

Rails 3.2.3

我需要通过使用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 ;  #每行3 td  #@ paged_photos由于某种原因在此处为空

<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 个答案:

答案 0 :(得分:1)

您可以尝试在home/test_method.js.erb中使用以下内容吗?

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

在此之后,访问paged_photos中的home/_test_partial.html.erb

如果可行,您必须像这样修改home/index.html.erb

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

PS:我不理解在# <%=j之前使用home/test_method.js.erb的情况。这只是一个错字还是故意的?