Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript变量发送到rails?_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

将javascript变量发送到rails?

将javascript变量发送到rails?,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我需要给控制器植入一个javascript变量。例如,如果视图中的代码如下所示- ... <script type="text/javascript"> variable_test = 'hello' </script> ... 视图当然是hello,而“一些代码”是我不知道怎么做的。首先,您需要以某种方式调用控制器。要么数据在表单中,然后提交表单,要么从javascript调用AJAX。在第一种情况下,您希望

我需要给控制器植入一个javascript变量。例如,如果视图中的代码如下所示-

    ...  <script type="text/javascript">
           variable_test = 'hello'
         </script> 
    ...

视图当然是hello,而“一些代码”是我不知道怎么做的。

首先,您需要以某种方式调用控制器。要么数据在表单中,然后提交表单,要么从javascript调用AJAX。在第一种情况下,您希望使用javascript向表单中添加一个隐藏的输入,其中包含您想要的名称和值。在第二种情况下,随AJAX请求发送的数据需要包含所需的名称-值对。如果我不知道你在做什么,我就不能说得更具体;您是在提交表单还是在使用AJAX,如果您使用AJAX,您是在使用javascript库,还是在使用AJAX的内置Rails帮助程序(例如,remote_函数)

但是,无论哪种方式,您都希望最终得到一个包含名称-值对“varreable\u test=hello”的请求。那你就这么做吧

@varliable_test = params[:varliable_test]
访问控制器中的值


(我还必须注意,您的意思可能是“变量”,而不是“可变责任”,但只要您保持一致,这显然不会影响功能。)

除非执行某种get或post,否则无法向控制器发送客户端代码。尝试使用jQuery的post或get方法。如果不使用jQuery,则可以执行以下操作:

var variable_test = 'hello';
var el = document.createElement('script');
el.setAttribute('src', 'path_to_controller' + '?variable_test=' + variable_test);
document.body.appendChild(el);
然后在控制器中执行以下操作:

@varliable_test = params[:varliable_test]

语法可能有点不对劲,但你可以大致了解一下

我也在寻找这个问题的答案。在我的一个应用程序中,我需要从谷歌的Places Autocomplete中获取数据。这种方法对我来说似乎是一个完美的解决方案(归功于Thaha kp:)

视图:


创建隐藏字段,将js变量的值赋给该字段,用ajax发布这个隐藏字段。我的意思是“变量”而不是“变量”。很抱歉拼写错误,我不是以英语为母语的人。通过jQueryAjax请求解决。谢谢:)
@varliable_test = params[:varliable_test]
<script type="text/javascript">
  var variable_test = 'hello';
  $(document).ready(function() {
    $('#model_variable_test').val(variable_test);
  });
</script>

...

<%= form_for :model do |f| %>
  ...
  <%= f.hidden_field :variable_test %>
  ...
<% end %>
def hello
  @variable_test = params[:model][:variable_test]
end