【问题标题】:rails render collection and localsrails 渲染集合和本地人
【发布时间】: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


【解决方案1】:

正如 J Plato 所建议的,底部的语法实际上是正确的。我的问题是,如果要显示子任务,则部分递归调用自身。渲染子任务时,未传递局部变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 2016-04-24
    • 2015-10-22
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多