我使用的是rails的gon gem,它允许您保存在控制器操作中定义的变量并在JavaScript中使用它们。当我在非Ajax设置中使用它时,它工作正常,但是,我在处理Ajax请求时遇到了成功使用它的问题。如何使用ajax在Rails中分配和访问JavaScript变量
问题:在JavaScript中将Ajax请求作为“未定义”出现时,我在控制器操作中分配给变量gon变量。
目标:我想触发我的页面,该页面在一个Ajax请求: 1)命中控制器动作,和Ruby的变量分配给坤变量。 2)然后呈现一个执行JavaScript的js.erb文件,其中的一部分需要采用步骤1中定义的Ruby变量,并将其视为一个js变量。
这里是在步骤1示例性动作:
def some_action
gon.my_ajax_var = {some: 'info'}
end
这里的它呈现的例子js.erb文件:
/some_action.js.erb
console.log('gon.my_ajax_var equals ' + gon.my_ajax_var) //this doesn't work! comes out as 'undefined' when I expected {some: 'info'}
任何想法我如何解决这一问题?我看了一下gon.watch页面,但是我对于是否涉及到这个问题以及如何实现正确的解决方案感到困惑。另外,如果没有更好的方法来做到这一点,我也会接受。
谢谢!
friedi,刚刚尝试过,但抛出了这个错误:“未定义的局部变量或方法'gon'为#<< Class:0x007fbfea377240>:0x007fbfe91c9958>”。这个错误对我来说很有意义,因为gon只能被定义为一个js变量而不是一个ruby变量。 –