2011-03-07 6 views
0

Rails 2.3.5メソッドローカル変数から部分的なものを渡すことはありませんか?

部分的にローカル変数が必要なAJAX呼び出しのメソッドから部分的なレンダリングを試みたのはこれが初めてです。クエリは正常に動作していますが、何が間違っているのかわからず、これまでの検索で何も見つかりませんでした。部分はレンダリングされており、ビューにはローカルと同じ方法が渡されます。

@group = Group.find(params[:group_id]) 

respond_to do |format| 
    format.html {render :partial => 'group_show_user_list', :locals=>{:users=>@group.users}} 
    format.js 
end 

エラー:

ActionView::TemplateError (undefined local variable or method `users' for #<ActionView::Base:0x8a33030>) on line #16 of app/views/groups/_group_show_user_list.html.erb: 
13:  <tbody> 
14: 
15: 
16: <% users.each do |user| %> 
17: 
18:   <tr id="dir_user_<%= user.id %>"> 
19:    <td> 

それは部分的には、メソッド内からレンダリングされたときに、部分的にローカル変数を渡すことは可能ですか?または、部分変数をインスタンス変数に変更する必要がありますか?

ありがとうございます。

はEDITは:

これは本当に答えではないが、コントローラに私が追加:

@users = @group.users 

と部分で私がコメントを追加しました:

<% users = users || @users %> 

私は本当にできませんでしたパーシャルが最初にグループインデックスページから呼び出され、 'ショー'ページが最初に生成されたときに選択された1つのグループに基づいて一意のグループのユーザーを必要とするため、パーシャルオーバー全体を変更します。

ローカルの部分をメソッドに渡すのがうまくいかない理由がわかっています。ローカルの部分をビューの一部に渡すときとは別の方法地元の人々を渡すだけでは方法では動作しません - ありがとう!

+0

パーツの代わりにフルページをレンダリングすると、それは機能しますか? –

+0

そうです。私はページ上に7つのパーシャルがあり、ajaxに変換しています( 'show'ページは大きいですユーザー管理ページ)。次のものには、グループインデックスページからローカル変数を取得する部分があります。私は他のものを試してみると、朝に何が起こるかを見ていきます。私はまだそれを動作させることができない場合、少なくとも回避策は簡単でした。私はおそらく、それが午前中に動作するかどうかを確認するために、ローカルのシンプルなハードコーディングされた文字列 "YES"を送信してみるべきです。 – Reno

+0

Ajax呼び出しをデバッグするだけです。それ以外はすべてが正しいように見えるから – Ashish

答えて

1

確かにrespond_to :htmlですか?他のRackベースのアプリケーションでは、AJAX呼び出しではrespond_to :jsということがよくあります。

テストの場合、render :blah, :layout=>request.xhr?を使用して、ajaxリクエストのレイアウトをオンまたはオフにして、ブラウザでルートをテストすることができます。

またやりたいかもしれません:少なくともあなたのブラウザでAJAXエラーを与えるだろう

@group = Group.find(params[:group_id]) 
render :nothing => true, :status => :not_found and return unless @group 

を。

0

多分私はあなたの質問に(ない)解決策を見つけました。 部分的にローカル変数を設定する代わりに<%users = users || @users%> あなたのような、..js.erbファイルでレンダリングコマンドで地元を設定することができ、 を(私が理解によると、あなただけのパーシャルにローカルVARSを使用する必要があります):

.update( "@users})))%@

さらに@users varを作成する必要があります。コントローラメソッド。

関連する問題