将变量从Javascript传递到Ruby on Rails

Passing variable from Javascript to Ruby on Rails

本文关键字:Ruby on Rails 变量 Javascript      更新时间:2023-09-26

在rails中你可以这样做:

<% name = @user.name %>
<script>
    var name = <%= name%>;
    alert(name);
    //prints the name of the user
</script>

你可以反过来做,像这样

<% name = @user.name %>
<script>
    var name = "John";
    <% name %> = name;
</script>
<% @user.name = name %>
<%= name %>
<!-- prints the name of the user, in this case "John" -->

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

关键是,你能把一个javascript变量的值传递给rail中的ruby变量吗?

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

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

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

<小时 />

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

  • (客户端(用户向服务器发送页面的HTTP请求,发送页面的位置,例如:http://myapp.com/users
  • (服务器端(服务器收到请求,按照定义的路由找到正确的控制器/操作
  • (服务器端(服务器以 HTML/CSS/Javascript 格式生成页面以发送回用户。它通过视图和部分生成HTML,执行这些页面的Ruby代码。
  • (服务器端(页面呈现后,服务器发送HTTP响应,并在正文中使用HTML/CSS/Javascript。
  • (客户端(客户端的浏览器接收服务器的响应并读取由HTML/CSS/Javascript组成的正文(大部分(。浏览器解析并呈现 HTML/CSS,并执行 javascript。