我查看了这里所有最热门的问题,包括引用最流行插件(如 BBQ 和 jQuery Address)的问题。
然而,我缺少一些东西。我需要从我在这些项目中看到的任何事情中退一步进行指导。他们假设了一些我显然不具备的基本知识,并且我无法推断出示例中的每一行代码实际上在做什么。
我想做四件事:
1) 使前进按钮像在非 AJAX 应用程序中一样工作。
2) 使后退按钮像在非 AJAX 应用程序中一样工作。
3)将url反映在地址栏中,以便可以将其添加为书签。
4)生成深层链接,以便可以抓取AJAX内容。
仅此而已。其他任何事情都是多余的。这是一个 Rails 3.0.4 应用程序,我的链接的 href 均为“#”。单击其中一个链接会激活 application.js 中的一项功能,该功能将当前页面上的 div 中的 html 替换为从 .js.erb 文件呈现的部分创建的更多链接。
我有一个面包屑路径,效果很好,但是使用后退按钮会将您带到您在查看应用程序之前正在查看的任何网站。
所以我的一些问题是:
1) 我的每个链接是否都需要一个唯一的 href 值而不是简单的“#”?
2)我应该每次都替换那个div,还是简单地隐藏它并创建一个新的。如果是这样,每个新的 div 都应该有一个新的 id 吗?
3)由于目前地址栏中的 url 没有改变,并且这些 AJAX 请求都是 POSTS,我是否需要在 Rails 中执行任何操作才能使其响应这些新 URL 之一,这些新 URL 在访问时总是会触发 GET 请求通过浏览器历史记录或后退按钮?
这些是阻碍我解决现有问题的障碍。非常感谢您提供的任何帮助!
EDIT:
我的应用程序不是基于选项卡的。页面加载时并非所有锚点都可用。用户单击链接时会发生以下情况:
1) 隐藏表单中的字段填充有单击的链接的文本值。
2) 隐藏表单被序列化并通过 POST 传递到控制器操作。
3) 控制器操作确定谁发出了请求,找出他们有权访问哪些数据,并使用表单值(现在是参数)来检索对象列表。
4) 这些对象被传递到 .js.erb 视图模板,该模板又使用传递的值渲染部分内容。
5)新链接通过.js.erb模板中的js反弹。
基本上,由于我的数据不是静态的,我需要弄清楚如何使用表单状态重新生成 POST 请求,以便真正“返回”。或者可以以某种方式缓存表单状态和屏幕吗?