如何在没有内联脚本的情况下将 ruby 变量传递给 rails 中的 javascript

How do I pass ruby variables to javascript in rails without inline scripts

我的 rails 应用的内容安全策略不允许内联 Javascript。这使得很难将内容传递到 rails 应用程序,并在视图中呈现内联 javascript。

有没有办法将 rails 变量传递给 javascript 而无需内联 Javascript?

  • 将您的 javascript 文件保存在 app/assets/javascripts 文件夹中

  • 在您的视图文件中,将隐藏字段用于要传递给 javascript

  • 的数据
  • 在您的 javascript 文件中,使用 $("#name_of_hidden_field")

我最终使用了 HTML5 Data Attributes

我添加了一个 divdata-* 属性,如下所示:

<%= tag("div", class: 'hidden-user-information', data: {
  intercom_app_id: ENV['INTERCOM_APP_ID'],
  user_id: current_user.id,
  user_name: current_user.profile.name,
  user_email: current_user.email,
  user_created_at: current_user.created_at.to_i
  })  %>

并使用 jQuery,我在我的 javascript 中访问了这些: $('div.hidden-user-information').data('intercom-app-id');