0

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

文件1

  @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
4

1 回答 1

0

你有很多使用 Rails 的经验吗?如果我正确解释了您的帖子,那么您似乎以错误的方式处理事情。

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

文件1:

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

这将为@folders 中的每个项目呈现一次部分文件夹/组列表。

部分文件:

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

默认情况下,部分中可访问的变量以部分本身命名。所以你得到 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
于 2009-08-24T08:05:24.767 回答