如何在Rails视图中访问JavaScript变量

4
有没有办法在Rails视图中访问JavaScript变量?我刚刚设置了一些JavaScript变量的值,想在Rails视图中访问它。谢谢。
4个回答

8

您需要明白,视图中的 Ruby 代码会在服务器上执行 - 在页面上任何 JavaScript 得到执行之前。

这就是为什么您不能像这样做:

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

<%= get_value_of_js_var_somehow %>

另一种方式可以实现:
<script>
  var js_var = <% generate_value_with_ruby %>;
  do_something_in_javascript_with_js_var();
</script>

1
以下是一个非常简单的例子,演示如何“用JavaScript做某事” - https://dev59.com/7FnUa4cB1Zd3GeqPcaEZ - ılǝ

4
您可以使用AJAX将javascript变量传递给Rails。例如,如果您想从javascript将用户的ID传递给Rails控制器中的方法,则可以执行以下代码:
<script>
  var id = 1;
  <%= remote_function :url => {:controller=>'controller_name', :action=>'method_name'}, :with => "'user_id=' + id" %>
</script>

您将通过POST请求作为参数接收变量。您可以使用params[:user_id]访问它。

def method_name
  if params[:user_id].exists?
    u = User.where('id = ?', params[:user_id]).first
  end
  puts u.path
end

希望我回答了你的问题。

0

如果你在 JavaScript 的高级代码(例如:application.js)中有这个变量,那么你可以在视图中直接引用它。

#application.js
var someVar = "Hello World";

然后在您的视图中(在客户端上执行),您可以...

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

如果这三篇文章中没有回答你的问题,我认为我们需要更具体的阐述。


-1
假设我们有以下脚本:
<script type="text/javascript">
  var a="some value";
  document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>';
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接