0

我想知道如何(在rails中)制作一个菜单(或标题)栏,它不会像facebook那样加载到各种页面请求上。您能否简要介绍一下 Facebook 使用了哪些技术以及如何在 rails3 中复制该机制?

4

2 回答 2

1

该技术称为ajax,您必须使所有链接都作为ajax请求工作并仅更新页面的所需部分...

你可以把你的布局分成两部分

<div id='header'>
  your code here...
</div>
<div id='content'>
  yield
</div>

现在您可以在 Rails 上的 link_to 标记上使用 :remote => true 选项,因此请求将是 ajax 请求

那么你必须提供一个 .js 视图来更改 id 为“内容”的 div 的内容以及你的视图代码

您的 .js 应该执行类似...(假设您使用的是 jQuery)

$('#content').html('<%= escape_javascript(render(:file => your_file.html.erb)) =>');

这是基本的想法,你必须玩ajax

我猜 facebook 也使用 HTML5 的 pushstate 来更改位置地址https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history以便您可以使用浏览器的后退/前进按钮

于 2012-06-19T19:07:16.663 回答
1

PJAX将 html 从您的服务器加载到当前页面,而无需加载整个页面。它是带有真正永久链接、页面标题和完全降级的工作返回按钮的 ajax。

于 2012-06-19T19:22:25.170 回答