Javascript 在rails I'中;我发送了一个var来查看,但在js文件中是nil

Javascript 在rails I'中;我发送了一个var来查看,但在js文件中是nil,javascript,ruby-on-rails,erb,Javascript,Ruby On Rails,Erb,我在rails中发送了一个var来在视图中使用它,我有一个js文件名charts.js.erb,它被调用,我需要在该js文件中使用var,但它是nil 在我的控制器a中有一个方法 def index @asd = 'hellow' end 在我看来我能做到 .div= @asd 但是在我的javascript文件中 alert('<%= @asd %>'); 警报(“”); @asd var为nil,我已经使用其他ruby代码进行了测试,但var不起作用ERB

我在rails中发送了一个var来在视图中使用它,我有一个js文件名charts.js.erb,它被调用,我需要在该js文件中使用var,但它是nil

在我的控制器a中有一个方法

  def index
    @asd = 'hellow'
  end
在我看来我能做到

.div= @asd
但是在我的javascript文件中

alert('<%= @asd %>');
警报(“”);

@asd var为nil,我已经使用其他ruby代码进行了测试,但var不起作用

ERB使用JavaScript时不是这样的。JS文件是在运行时之前生成的,因此它们不能访问这样的动态服务器值

我通常遵循的模式是将服务器生成的值放在DOM中的某个位置,以便JS获取

<div id="asd" data-asd="<%= @asd %>">

这不是ERB使用JavaScript的方式。JS文件是在运行时之前生成的,因此它们不能访问这样的动态服务器值

我通常遵循的模式是将服务器生成的值放在DOM中的某个位置,以便JS获取

<div id="asd" data-asd="<%= @asd %>">

该警报与您的div在同一视图中吗?如果是的话,它应该会起作用。如果它在assets/javascripts中的某个地方,那么不,它应该不起作用。尝试使用respond_来block.no@SergioTulentsev,我将charts.js文件附在该js上,该警报不会显示任何东西。我测试了ads变量,结果是nil@jacr1102:是的,这是意料之中的事。在您的控制器有机会设置变量@SergioTulentsev之前,资产已呈现为方式。没有办法使用它吗?我需要在视图中将其分配给javascript变量,以便稍后在jv文件中使用它?该警报与您的div在同一视图中吗?如果是的话,它应该会起作用。如果它在assets/javascripts中的某个地方,那么不,它应该不起作用。尝试使用respond_来block.no@SergioTulentsev,我将charts.js文件附在该js上,该警报不会显示任何东西。我测试了ads变量,结果是nil@jacr1102:是的,这是意料之中的事。在您的控制器有机会设置变量之前,资产已呈现方式。@SergioTulentsev没有办法使用它吗?我需要在视图中将其分配给javascript变量,以便稍后在jv文件中使用它?