我已经在 Ruby on Rails 上编程了一段时间,并且能够在我的 javascript 代码中轻松地从我的控制器访问数据,作为一个初学者,我遇到了Gon Gem。老实说,它非常简单地解决了这个问题,但对 RoR 初学者来说有点神秘。
深入研究 gem 的源代码,我现在了解它是如何工作的:您要求gon
传递给 JS 的变量由 gem 跟踪并插入到由<script />
标签呈现的视图上的erb
标签中
<%= Gon::Base.render_data %>
这使得该gon
对象在您的 JS 中可用,因为它将它作为window
属性注入。
我的问题是,这种做法有多好?坦率地说,将 JS 代码动态注入站点只是为了从浏览器中的服务器访问一些数据似乎有点可疑。这不是更好的做法吗
- 只是通过 RoR 服务器端的端点和来自 JS 前端的 AJAX 调用使数据可用?
或者
- 在 RoR 控制器上的相应操作期间在 cookie 上设置所需的数据,然后从 JS 中读取它?