在调用部分文件时使用AJAX时无法获取新的更新数据

时间:2009-08-22 13:56:25

标签: ruby-on-rails ajax file html partial

我从循环中调用了部分文件。现在,当我更新,我实际上没有得到更新的结果,但需要刷新以获得更新的结果。 代码是这样的:

file1

  @folders.each do |@folder|
  = render :partial => 'folders/group_list'

部分文件

%div{:id => "group_list_#{@folder.id}"}  // this is the div which needs to be updated
  = group_member(@folder)   //this is the helper method

我需要从控制器更新的@folder,但我总是得到file1的@folder

控制器端

def any_method
  ..
  some code
  ..
  @folder = Folder.find(params[:folder_id])
  render :partial => '/folders/group_list'
end

1 个答案:

答案 0 :(得分:0)

您对Rails有过多少经验吗?如果我正确地解释你的帖子,你似乎是以错误的方式处理事情。

看起来你正在使用haml给我。如果是这样,您的文件看起来应该更像这样:

<强>文件1:

= render :partial => 'folders/group_list', :collection => @folders

这会为@folders中的每个项目呈现部分文件夹/ group_list。

部分文件:

%div{ :id => "group_list_#{group_list.id}"
    = group_member(folder)

默认情况下,partial中可访问的变量以partial本身命名。所以你得到group_list的id,而不是文件夹。您可以通过将:as参数传递给render()来修改此行为。

<强>控制器:

def ajax_method
    @folder = Folder.find(params[:folder_id])
    render :update do |page|
        page.replace "group_list_#{@folder.id}", :partial => 'folders/group_list', :object => @folder
    end
end