【发布时间】:2012-04-12 20:22:27
【问题描述】:
在我的资产中,我有一个名为maps.js.erb 的文件,基本上只有以下(调试)内容:
alert("<%= @map.width %>");
这个 JS 文件是通过属于 maps 的 show.html.erb 视图加载的。
<%= javascript_include_tag params[:controller] %>
<h1><%= @map.title %></h1>
…
HTML 文件本身会显示地图的标题,例如当浏览到/maps/1/ 时,因为@map 是在控制器中定义的。但是,只要我包含 JS 文件,就会收到以下错误:
地图中的 NoMethodError#show
显示
…/app/views/maps/show.html.erb第 1 行出现的位置:nil:NilClass 的未定义方法“标题” (在
…/app/assets/javascripts/maps.js.erb)
- 为什么
@map在js.erb文件中不可用? - 我还能如何访问控制器中定义的这个实例变量?
【问题讨论】:
-
你宁愿用
alert("<%= @map.width %>");调试 -
你是对的,但在这个问题的上下文中并不重要。
标签: javascript ruby-on-rails asset-pipeline ruby-on-rails-3.2