1

我在我的下一个变量main_controller.rb

def create:
   @token = "24vgd32"
end

在我的 中views/create.erb,我写道:

<%= javascript_tag do %>
   window.my_token = '<%= j @token %>';
<% end %>

通过这种方式,我可以在此页面引用的任何 JavaScript 文件中使用此变量。

但我如何在我的 中使用它application.js

这是我的application.js

$(document).ready(function(){
  licensario.getLicense({
    wizardToken: my_token
  });
});

任何帮助表示赞赏!

4

3 回答 3

2

在你的 create.html.erb 中使用这个

<%= hidden_field_tag :my_token, @token, :id => 'some_field_id' %>

some_field_idmy_token替换为所需的名称。

在您的 javascript 文件中

$(document).ready(function(){
  token = $('#some_field_id').val();
  //use your token for any other means.
});
于 2013-01-30T12:51:33.823 回答
1

我看到了 3 种方法:

  • 您可以在 js 文件中使用 erb,将其命名为application.js.erb. 但是,您要传递的数据必须在编译文件时可用,因此这可能不是您想要做的;
  • 您可以向服务器发出 XHR 请求以获取所需的值;
  • 您可以将值嵌入到视图的 dom 中。有些人会建议使用隐藏字段,我更倾向于使用数据属性。例如,<body data-my-value="32">.... 您可以通过在您的 js 中检索它$('body').data('my-value')。一旦加载了dom,请小心调用它。

我倾向于使用后者。

于 2013-01-30T12:45:33.337 回答
1

window.my_token在全局范围内创建my_token一个变量;一旦它被定义,它就可以简单application.js地使用my_token

于 2013-01-30T12:47:11.207 回答