Ruby on rails 如何在rails视图中访问javascript变量

Ruby on rails 如何在rails视图中访问javascript变量,ruby-on-rails,Ruby On Rails,是否有任何方法可以访问rails视图中的javasript变量。 我只是设置了javascript变量的一些值,并希望在rails视图中访问它 谢谢您必须了解视图中的ruby代码是在服务器上执行的,而页面上的任何javascript都是在执行更改之前执行的 这就是为什么你不能做这样的事情: <script> var js_var = 1; </script> <%= get_value_of_js_var_somehow %> var js_var=

是否有任何方法可以访问rails视图中的javasript变量。 我只是设置了javascript变量的一些值,并希望在rails视图中访问它


谢谢

您必须了解视图中的ruby代码是在服务器上执行的,而页面上的任何javascript都是在执行更改之前执行的

这就是为什么你不能做这样的事情:

<script>
  var js_var = 1;
</script>

<%= get_value_of_js_var_somehow %>

var js_var=1;
另一种方法是:

<script>
  var js_var = <% generate_value_with_ruby %>;
  do_something_in_javascript_with_js_var();
</script>

var js_var=;
用js\u var()在javascript中做些什么;

您可以使用AJAX将javascript变量传递给rails。例如,如果要从javascript将用户id传递给rails控制器中的方法,可以执行以下代码:

<script>
  var id = 1;
  <%= remote_function :url => {:controller=>'controller_name', :action=>'method_name'}, :with => "'user_id=' + id" %>
</script>

希望我已经回答了您的问题。

如果您在更高的Javascript片段(本身为application.js)中有这个Javascript变量,那么您总是可以在视图中引用它

#application.js
var someVar = "Hello World";
然后在您的视图中(在客户端上执行),您可以

<script type='text/javascript'>
  alert(someVar);
</script>

警报(someVar);

如果这三篇文章中有一篇不能回答你的问题,我想我们需要更具体的ellaboration

<script type="text/javascript">
  var a="some value";
  document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>';
</script>

var a=“某些值”;
document.getElementById('tagid')。innerHTML=''“+a+”,name=>“somename”)%>;

下面是一个非常简单的例子,如何“用javascript做某事”-
<script type="text/javascript">
  var a="some value";
  document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>';
</script>