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