繁体   English   中英

将javascript变量发送到rails?

[英]Send javascript variables to rails?

我需要将一个javascript变量播种到控制器。 例如,如果视图中的代码如下 -

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

我需要控制器来获取variable_test,如 -

 def hello
 @variable_test = #Some code
 # @variable_test => 'hello'
 end

这个视图当然是你好,而且“一些代码”是我不知道该怎么做的。

您不能将客户端代码发送到控制器,除非您执行某种类型的获取或发布。 尝试使用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]

语法可能有点偏,但你会得到一般的想法。

首先,你需要以某种方式调用控制器。 数据是在表单中,您提交表单,或者您从JavaScript进行AJAX调用。 在第一种情况下,您希望使用javascript向表单添加隐藏的输入,其中包含您想要的名称和值。 在第二种情况下,使用AJAX请求发送的数据需要包含所需的名称 - 值对。 如果不了解你正在做的事情,我就无法更具体; 你在提交表格或使用AJAX吗?如果你正在使用AJAX,你使用的是javascript库,或者使用任何内置的Rails助手进行ajax(例如remote_function)。

但是,无论哪种方式,您希望最终得到包含名称 - 值对“varliable_test = hello”的请求。 然后你就做了

@varliable_test = params[:varliable_test]

访问控制器中的值。

(我还要注意,大概你的意思是“变量”,而不是“变量”,但显然只要你保持一致,它就不会影响功能。)

我也在寻找这个问题的答案。 在我的某个应用中,我需要从Google的地方自动填充中获取数据。 这种方法对我来说看起来是一个完美的解决方案(归功于Thaha kp: 如何在js视图中将javascript变量传递给erb代码?

视图:

<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

暂无
暂无

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

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