javascript - 如何使用 ajax 在 Rails 中分配和访问 javascript 变量

标签 javascript ruby-on-rails ajax

我正在使用 gon gem for rails,它允许您保存在 Controller 操作中定义的变量并在 JavaScript 中使用它们。当我在非 Ajax 设置中使用它时它工作正常,但是,我在执行 Ajax 请求时遇到成功使用它的问题。

问题:当发出 Ajax 请求时,我在 Controller 操作中分配给 gon 变量的 Ruby 变量在 JavaScript 中显示为“未定义”。

目标:我想在我的页面上触发一个 Ajax 请求,该请求: 1) 在 Controller 中点击一个 Action ,并将一个 Ruby 变量分配给一个 gon 变量。 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 页面,但我对这是否与我遇到的这个问题有关以及如何实现正确的解决方案感到困惑。此外,如果有更好的方法可以在没有 gon 的情况下执行此操作,我也愿意接受。

谢谢!

最佳答案

我最终通过执行以下操作解决了这个问题:

在我的 Controller 中:

def some_action
  @my_ajax_var = {some: 'info'}.to_json
end

在我对应的观点中: /some_action.js.erb

var my_ajax_var = <%= @my_ajax_var.html_safe %>

搭载 gon gem 会很好,但这完成了工作。

关于javascript - 如何使用 ajax 在 Rails 中分配和访问 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241073/

相关文章:

jquery - 如何使用 JQuery 下载文件或使用 Ajax 显示错误页面

ruby-on-rails - 数据库连接错误?使用 Postgres

javascript - 如果单击“应用设置”按钮,则保存表单数据,否则恢复为旧数据

javascript - 是否可以在 JavaScript 对象文字表示法中创建只读成员?

JavaScript 邮件函数 - 从字符串中删除日期戳部分

ruby-on-rails - 如何在发送 Restful POST/PUT API 之前使用 rails3.2.x 获取 CSRF token ,而无需来自服务器端的任何表单/UI?

ruby-on-rails - 用 upstart 脚本守护 sidekiq - 不工作

javascript - 处理 Javascript 中的异步调用

javascript - 如何模拟 Javascript `super` 以便定义 `new.target`?

javascript - 如何将对象绑定(bind)到数组中