在嵌入式ruby中访问javascript变量

在嵌入式ruby中访问javascript变量,javascript,ruby,variables,Javascript,Ruby,Variables,我在视图中使用以下JS代码计算两个变量“user\u name”和“user\u uid”: 函数f1(){ . . . user_name=“某些变量”; user\u uid=“另一个变量”; }); } 我想将两个变量“user\u name”和“user\u uid”发送到我的控制器。我使用以下代码: <%= link_to "GO!", new_user_path(:userName => user_name, :userUid => user_id), :rem

我在视图中使用以下JS代码计算两个变量“user\u name”和“user\u uid”:


函数f1(){
.
.
.
user_name=“某些变量”;
user\u uid=“另一个变量”;
});
}
我想将两个变量“user\u name”和“user\u uid”发送到我的控制器。我使用以下代码:

<%= link_to "GO!", new_user_path(:userName => user_name, :userUid => user_id), :remote=> true %> 
user\u name,:userUid=>user\u id),:remote=>true%>

我的控制器和模型工作正常。但是这两个变量并没有从JS传递到上面嵌入的ruby代码。如果有人指点我做错了什么,我将不胜感激。谢谢

最大的错误是不知道代码在哪里执行:

  • ()中的代码在客户端看到任何HTML之前在服务器上执行
  • JS从服务器发送后,在客户端上执行
有很多选项,包括使用Ruby变量创建JS变量值——这是否是最佳选项取决于。例如:

函数f1(){
var user_name=“”;
//或者,更简洁地说:
var user_uid=“”;
Ruby变量可以在模板、控制器等中初始化


同样,它是否应该是有争议的。

最大的错误是不知道代码在哪里执行:

  • ()中的代码在客户端看到任何HTML之前在服务器上执行
  • JS从服务器发送后,在客户端上执行
有许多选项,包括使用Ruby变量创建JS变量值——这是否是最佳选项取决于。例如:

函数f1(){
var user_name=“”;
//或者,更简洁地说:
var user_uid=“”;
Ruby变量可以在模板、控制器等中初始化


同样,它是否应该是有争议的。

谢谢Dave!这两个变量是用FB API创建的。它们是用JS创建的。我还有其他选择吗?谢谢!!@user1388066,那是个问题;你需要以不同的方式构建链接,或者提交表单,或者重写链接,或者…链接本身工作正常。如果我将变量设置为w在链接中,它工作正常。变量没有按照我希望的方式设置。而且我不确定这是否可行,因为我的变量是在JS中设置的。谢谢Dave!如果你的控制器必须访问此信息,那么你必须使用AJAX调用。将信息传输到服务器,处理它,并返回appr适当的响应。但是,如果可以,最好避免这样做。@user1388066正如我所说的,你需要以不同的方式构建链接——链接本身是无用的,它需要被构建以实际包含你需要的数据。这就是为什么我说它需要以不同的方式构建,因为服务器端没有访问数据的权限客户端JS值。谢谢Dave!这两个变量是使用FB API创建的。它们是在JS中创建的。我还有其他选项吗?谢谢!!@user1388066,这是个问题;你需要以不同的方式构建链接,或者提交表单,或者重写链接,或者…链接本身工作正常。如果我将链接中的变量设置为,它就工作了很好。变量没有按照我希望的方式设置。我甚至不确定这是否可行,因为我的变量是在JS中设置的。谢谢Dave!如果您的控制器必须访问此信息,那么您必须使用AJAX调用。将信息传输到服务器,处理并返回适当的响应。但是,如果可以的话,最好避免这样做。@user1388066正如我所说的,你需要以不同的方式构建链接——链接本身是无用的,它需要被构建以实际包含你需要的数据。这就是为什么我说它需要以不同的方式构建,因为服务器端没有访问客户端JS值的权限。
<%= link_to "GO!", new_user_path(:userName => user_name, :userUid => user_id), :remote=> true %>