4

在 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 变量的值传递给 rails 中的 ruby​​ 变量吗

4

1 回答 1

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。
于 2013-09-27T17:57:50.570 回答