【发布时间】:2015-03-05 15:04:51
【问题描述】:
我正在尝试从一个 js.erb 文件中渲染一个部分,该文件既有一个集合,也有一个传递给它的局部变量。一切正常,除了我无法访问视图中的局部变量。我尝试了以下方法:
<%= escape_javascript(render(partial: 'tasks/task', collection: @task_group.tasks_belonging_to, as: :task, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(partial: 'tasks/task', collection: @task_group.tasks_belonging_to, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(partial: @task_group.tasks_belonging_to, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(@task_group.tasks_belonging_to, testvble: "bob")) %>
在我尝试访问视图中的局部变量之前,上述每一项都有效。我得到错误:
undefined local variable or method `testvble'
为了完整起见,上面的每一个都在js.erb文件中的以下语句中(在xxxx位置):
$("#task-group-<%=@task_group.id%>").append("xxxx").hide().show('slow')
这是导致问题的部分代码:
<p>should be bob:<%= testvble %></p>
【问题讨论】:
-
你在 Rails 4 上吗?您显示的 4 个渲染语句中的最后一个应该可以工作。你可以从你引用testvble的部分发布代码的sn-p吗?
-
是的,我在 Rails 4.2 上。我用导致问题的部分代码编辑了上面的内容
-
我想我找到了问题所在。当有子任务要显示时,partial 本身会递归调用自身,并且 partial 没有将变量传递给 child。所以是的,底部语法有效(其他语法现在可能也有效,但我会坚持使用最简洁的语法)。谢谢!
-
我已经做到了。很高兴你找到它——祝你好运!
标签: ruby-on-rails partials renderpartial