0

ループから部分ファイルを呼び出しました。更新すると、実際には更新された結果は得られませんが、更新された結果を取得するには更新を行う必要があります。コードは次のようになります:

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
4

1 に答える 1

0

Rails の経験は豊富ですか? 私があなたの投稿を正しく解釈しているとしたら、あなたは間違った方法で物事を進めているようです.

私にはhamlを使っているようです。その場合、ファイルは次のようになります。

ファイル1:

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

これにより、@folders のアイテムごとに 1 回、部分的なフォルダー/group_list がレンダリングされます。

部分ファイル:

%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 に答える