Rails 3 & jQuery - 两者如何协同工作来创建 Web 应用程序?
Posted
技术标签:
【中文标题】Rails 3 & jQuery - 两者如何协同工作来创建 Web 应用程序?【英文标题】:Rails 3 & jQuery - How the two work together to create a web app? 【发布时间】:2011-04-16 10:26:44 【问题描述】:我需要帮助理解 Rails 中的端到端流程。
我可以在以下示例中使用帮助。让我们以 Facebook 为例。
当您在 Facebook.com 上并单击 MESSAGES 时,URL 将更改为 (facebook.com/?sk=messages),然后使用 AJAX 下载 html/JS 内容,并在内容中注入 javascript面板...没有浏览器刷新,这是我所追求的。
我的具体问题是:
-
对于通过 AJAX 下载的内容,该内容是否来自 rails 部分内容?... like(app>views>messages>_messagestable.html.erb
知道获取消息内容然后将内容注入内容面板的 JavaScript 应该驻留在哪里? (那是application.js吗?
将消息内容 (_messagestable.html.erb) 注入内容面板后,将需要特定于该内容的新 JavaScript 函数...应该放在哪里?
【问题讨论】:
【参考方案1】:大概 Rails 的工作方式与其他任何主要框架一样。通常,您希望 AJAX 和 GET 请求能够很好地协同工作。所以想象一下你有这个网址:
http://www.example.com/messages
转到此处将加载您网站的消息部分,而无需进行 AJAX 调用。但是,如果你去:
http://www.example.com/#/messages
您将登陆 www.example.com,您可以使用 AJAX 将“/messages”部分发送到您的服务器,在那里它可以将其解释为对该控制器的请求以获取该消息视图(或者无论如何您已经设置好了)。这是我见过的一种称为 hijax 的技术,因为您可以在页面上添加正确链接到的实际锚元素
http://www.example.com/messages
或
http://www.example.com/maps
但是在你的javascript中,你可以取消链接的操作,将浏览器重定向到:
http://www.example.com/#/messages
或
http://www.example.com/#maps
现在,由于您有其他 javascript 函数侦听哈希标记中的更改,因此它的作用与您直接访问该链接一样...即将“/maps”发送到服务器,有服务器解释它,并回退您要填充页面的所需内容 HTML。通过这种方式,搜索引擎可以抓取您的网站,并且您可以获得适合使用和不使用 javascript 的用户的用户体验。
现在,为了在页面加载后加载额外的 Javascript 功能,我相信,您可以简单地使用 Javascript 插入新标签,并将源代码添加到新脚本所在的任何位置。您可以使用 jQuery 的 .getScript() 方法轻松做到这一点:
http://api.jquery.com/jQuery.getScript/
至于所有这些脚本所在的位置...我想这取决于您或 Rails。解析 URL 哈希的能力是您绝对需要将它们结合在一起的能力。为此,您可以选择多个 jQuery 库:
Detecting Back Button/Hash Change in URL
希望这会有所帮助..
【讨论】:
@treeface,这是非常有用的信息,谢谢!我觉得缺少的是一个实用的 Rails 示例应用程序,其中提到的所有部分都是连接的 不客气。我从未使用过 Rails,所以我无法确切说明它是如何工作的,但如果我是你,我会专门研究 Rails 如何处理其 URL 请求(通常框架将其称为“路由”或“路线”)。当您弄清楚如何在 Rails 中呈现基本页面后,您可以检查该请求是基本页面请求还是 AJAX 请求。在您的页面正常通过 GET 请求的情况下,您可以提供整个页面和视图。如果是 AJAX 请求,可以返回一个 JSON 对象,里面包含所需的 HTML。 这很有趣。 Rails 确实有那个.. 路由... 我得试一试... 从 AJAX 的角度来看上面的 FB 消息示例.. 你是否建议提供一大块 HTML 或 JSON 格式的对象JavaScript 知道如何注入? 确实...听起来您正在解决这个问题。您将希望服务器完成所有繁重的工作,因此您希望能够从服务器获取字符串并将其直接插入 DOM。研究在 Rails 中将视图加载为字符串以及如何编码 JSON 对象。基本上,您需要返回一个如下所示的 JSON 对象:success:true, content:' 谢谢。疯了,没有关于这个的教程..我去!以上是关于Rails 3 & jQuery - 两者如何协同工作来创建 Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Rails / jQuery sortable => 将 Item 拖放到彼此之上以嵌套 Model
Rails 4:如何使用 jQuery 为当前页面设置导航样式
“Postmark::InvalidMessageError:提供电子邮件 TextBody 或 HtmlBody 或两者。”对于 rails 3.2 应用程序