【问题标题】:Ruby on Rails render partial, undefined local variableRuby on Rails 渲染部分未定义的局部变量
【发布时间】:2018-05-05 10:59:40
【问题描述】:

我的 ruby​​ on rails 应用程序中有一个更改头像弹出窗口。我正在尝试将它用于多个模型,例如更改个人资料图片或产品图片。

我创建了一个视图并尝试使用 user.html.erb 文件中的参数打开它:

<div id="myModal_change_avatar" class="modal-dialog fade-scale">
 <div class="modal-content">
  <div style="height: 100%;width: 100%" id="id_model_content">
   <%= render partial: 'change_avatar/index', locals: { par:'param'} %>
  </div>
 </div>
</div>

在位于 views/change_avatar 下的 _index.html.erb 文件中:

<h1><%= par %></h1>

但是,当我打开 user.html.erb 文件时,我得到“未定义的局部变量或方法 `par'”。

我看不到我错过了什么。

有什么建议吗?

谢谢。

【问题讨论】:

  • 你能显示 Web 控制台的输出吗?应该告诉您它是否在部分文件或父文件中找不到 par 的值或声明。错误在链中发生的位置应该告诉您更多关于问题所在。

标签: ruby-on-rails ruby partial-views partial


【解决方案1】:

我过去也遇到过这个问题,但不完全确定是什么原因造成的,但就我而言,它似乎与深度嵌套的部分有关(但仅限于少数视图)。

解决方案是从 local_assigns 哈希中访问局部变量。我倾向于将其分配给页面顶部的局部变量,如下所示:-

<% par ||= local_assigns[:par] %>

希望这会有所帮助。

【讨论】:

  • local_assigns[:par] 似乎是关键。非常感谢
  • 感谢您的回答!现在是 2020 年,我在使用 Rails 6 应用程序时遇到了这个问题。我不得不稍微修改一下代码:&lt;% name ||= local_assigns[:locals][:name] %&gt;.
猜你喜欢
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2016-08-23
  • 2011-05-14
  • 2017-05-07
相关资源
最近更新 更多