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>
是否有可能当部分从方法内呈现给本地变量传递到部分?或者我应该将部分改为实例变量?
非常感谢!
编辑:
这是不是一个真正的答案,但在控制器我说:
@users = @group.users
,并在部分我说:
<% users = users || @users %>
我真的不能因为部分最初是从组索引页面调用的,并且需要基于首次生成'show'页面时选择的一个组的唯一一组用户,所以更改整个部分。
我仍然很想知道为什么在方法中传递局部方法不起作用 - 就像我需要以与将视图中的局部方法传递给局部方法时不同的方式,或者如果传递当地人只是不从一种方法工作 - 谢谢!
一切都看起来正确如果你渲染整个页面而不是部分它的作品 – 2011-03-07 04:41:10
是的,我会在页面上有7个其他部分转换为ajax('show'页面是一个大用户管理页面)。下一个也有一个从组索引页面获取局部变量的部分。我会看到早晨当我尝试另一个时会发生什么。如果我仍然无法实现它,至少该解决方法很容易。我应该尝试发送一个简单的硬编码字符串“YES”作为本地来查看它是否在早晨有效。 – Reno 2011-03-07 04:52:56
只需调试您的Ajax调用。因为除了一切看起来不错 – Ashish 2011-03-07 04:57:31