繁体   English   中英

将视图中的参数传递给javascript

[英]pass a parameter from a views to a javascript

我的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
  });
});

任何帮助赞赏!

在你的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.
});

我看到3种方式:

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

我倾向于使用后者。

window.my_token使my_token成为全局范围的变量; 一旦它被定义它提供给application.js简单地my_token

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM