我在视图中使用以下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代码。我很欣赏有关我做错的任何指示。谢谢!
答案 0 :(得分:6)
最大的错误是不知道代码的执行位置:
<%= ... %>
(Erb markers)内的代码在客户端看到任何HTML之前在服务器上执行。有许多选项,包括使用Ruby变量创建JS变量值 - 这是否是最佳选项所依赖的。例如:
function f1() {
var user_name = "<%= escape_javascript(a_ruby_variable) %>";
// Or, more concisely:
var user_uid = "<%=j another_ruby_variable %>";
Ruby变量可以在模板,控制器等中初始化。
同样, 是否应该是值得商榷的。