我在 Rails 控制器中定义了以下变量:
$PATH
在 JavaScript 中,我想更改此变量的值:
<script>
$("#resetDefaults").click(function(){
$PATH = '3'; //try 1
<%= $PATH %> = '3'; // try 2
});
</script>
我已经尝试了上述两种说法,但不知道该怎么做。
我在 Rails 控制器中定义了以下变量:
$PATH
在 JavaScript 中,我想更改此变量的值:
<script>
$("#resetDefaults").click(function(){
$PATH = '3'; //try 1
<%= $PATH %> = '3'; // try 2
});
</script>
我已经尝试了上述两种说法,但不知道该怎么做。
全局变量仅在服务器上执行的 Ruby 代码中是全局的。
您正在浏览器中运行 JavaScript 代码。该代码无法直接访问服务器上的变量。
如果您希望更改服务器上的某些状态(变量),您需要从 JavaScript 代码中调用 Rails 控制器方法。即,您需要从浏览器对服务器进行 AJAX 调用。像这样的东西:
$("#resetDefaults").click(function() {
$.ajax({ url: "<%= url_for(:action => 'update_path_var') %>" });
return false;
});
然后在控制器中你有类似的东西:
def update_path_var
$PATH = 1234
render :nothing => true
end
http://api.jquery.com/jQuery.ajax/
http://apidock.com/rails/ActionController/Base/url_for
顺便说一句,通常在 Ruby 中使用全局变量并不被认为是好的编码习惯,除非有一些非常具体的原因。
没有办法做到这一点。我认为你应该对网络编程课程做一些介绍。