将变量从Javascript传递到Ruby on Rails

nnn*_*867 4 javascript ruby variables ruby-on-rails

在rails中你可以这样做:

<% name = @user.name %>
<script>
    var name = <%= name%>;
    alert(name);
    //prints the name of the user
</script>
Run Code Online (Sandbox Code Playgroud)

你可以反过来这样做

<% name = @user.name %>
<script>
    var name = "John";
    <% name %> = name;
</script>

<% @user.name = name %>

<%= name %>
<!-- prints the name of the user, in this case "John" -->
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,但是出于示例的目的

关键是,你能否将javascript变量的值传递给rails中的ruby变量

MrY*_*iji 5

不,你不能直接从javascript传递变量到rails:

  • Ruby on Rails的代码在服务器端执行,以生成页面(使用HTML,CSS和Javascript).
  • Javascript的代码由客户端在浏览器上执行.

沟通客户端 - >服务器的唯一方法是使用请求.您可以使用AJAX(异步Javascript和XML)从客户端向服务器发送请求,而无需重新加载页面.


您必须了解有关服务器/客户端代码的一些概念."从网站显示页面"的过程:

  • (客户端)用户向服务器发送HTTP请求以发送页面,发送页面的位置,例如:http://myapp.com/users
  • (服务器端)服务器获取请求,在定义的路由后找到适当的控制器/操作
  • (服务器端)服务器生成HTML/CSS/Javascript中的页面以发送回用户.它通过视图和部分生成HTML,执行这些页面的ruby代码.
  • (服务器端)一旦页面呈现(完全生成HTML/CSS/Javascript),服务器就会发送HTTP响应
  • (客户端)客户端的浏览器接收服务器的响应,由HTML/CSS/javascript(大多数)组成.浏览器呈现HTML/CSS,并执行javascript.