访问嵌入式ruby中的javascript变量

时间:2012-07-12 23:09:54

标签: javascript ruby variables

我在视图中使用以下JS代码来计算两个变量“user_name”和“user_uid”:

<script type="text/javascript">
function f1() {
.
.
.
user_name = "some variable";
user_uid = "another variable";
});
}
</script>

我想将两个变量“user_name”和“user_uid”发送到我的控制器。我使用以下代码:

<%= link_to "GO!", new_user_path(:userName => user_name, :userUid => user_id), :remote=> true %> 

我的控制器和模型工作正常。但是这两个变量并没有从JS传递给上面的嵌入式ruby代码。我很欣赏有关我做错的任何指示。谢谢!

1 个答案:

答案 0 :(得分:6)

最大的错误是不知道代码的执行位置:

  • <%= ... %>Erb markers)内的代码在客户端看到任何HTML之前在服务器上执行。
  • 从服务器发送后,JS在客户端上执行。

有许多选项,包括使用Ruby变量创建JS变量值 - 这是否是最佳选项所依赖的。例如:

function f1() {
  var user_name = "<%= escape_javascript(a_ruby_variable) %>";
  // Or, more concisely:
  var user_uid = "<%=j another_ruby_variable %>";

Ruby变量可以在模板,控制器等中初始化。

同样, 是否应该是值得商榷的。