0

我在 rails 3.2 的显示页面上有一个交互式 javascript 图,该页面还包含一个链接到图中项目的标题。当用户单击图表中的项目时,我想通过 ajax 请求更新页面,但我不希望重新加载图表。我以前没有实现 ajax 请求,我不能说我完全理解这个概念对于 Web 开发来说是新的。但是,我已经阅读了一些关于 turbolinks 和 pjax 的内容,我的问题似乎与这些有关,但我不知道如何实现这种方法。

show.html.erb

<% provide(:title, @item.name) %>

<h2>
   <%= @item.name %> 
</h2>
…

显示页面的 url 路径是(对于第 1 项):

localhost:3000/items/1

我想我必须通过来自我的 javascript 代码的 ajax 请求来更改实例变量@item。但是,我还想更新 url,所以它不仅仅是一个变量更改,而是一个 url 重定向。关于如何做到这一点的任何建议?

4

1 回答 1

1

这不是一个可以用代码来回答的问题,因为实现你想要的东西的方法太多了,而且没有足够的信息能够给你任何有意义的东西。

您需要做出的关键区别在于服务器端代码和客户端代码。Ruby 在服务器上执行,而 javascript 在客户端的浏览器中执行。因此,您不能@item使用 AJAX 查询修改您的变量。您可以做的是编辑使用 AJAX 呈现的 HTML,但这本身就是一个值得几本书的主题。

Turbo 链接和 PJAX 是 AJAX 的一种实现,它<body>在您单击链接时重新加载标签的全部内容(或您可以定义的部分),而不是进行正常的页面重新加载。这可以节省大量时间,因为不会重新加载资产(javascript、样式表等)。这可能是您需要的,也可能不是,因此请查看PJAX 示例页面

在进一步研究之前,真的值得阅读 AJAX。我可以推荐的一个资源是一本名为Agile Development With Rails的书。这贯穿了构建 Rails 应用程序的整个过程,并在上面添加了 AJAX 甜头。

但是,网上有很多资源。首先,了解 Ajax 如何在 Rails 之外工作,然后开始在 Google 上搜索“Rails 和 AJAX”。

于 2012-11-22T11:16:47.003 回答