在我的 Rails 应用程序中,我有一个名为“Photo”的模型和一个 PhotosController。正如预期的那样,我已经以 REST 方式路由 URL,以便 URL“/photos”返回所有照片的 HTML 渲染列表(作为缩略图),“/photos/foo”返回照片的 HTML 渲染表示形式与 friendly_id “foo”的。 (我还进行 XML、JSON 和二进制表示,但它们与此处无关。)
我想让列表页面在初始加载时显示照片缩略图的子集,然后通过 AJAX(特别是 jQuery)动态地将更多缩略图添加到我的列表中。我已经有了在照片/索引 View 中呈现单个照片列表项(基本上是 <li><img>
)的 HTML。由于 jQuery 可以 inject HTML directly into the DOM ,我认为最好的办法是将列表项代码提取到一个部分中,然后通过 AJAX 将该部分加载到列表中。
我的问题是:将 HTML 从部分中取出并放入 DOM 的最佳方法是什么?
(我已经有了一个实现的想法;我会将其作为答案发布,以允许适当的投票和评论)。
最佳答案
我认为最 RESTful 的方法是将照片的列表项表示/ View 作为照片的子资源。这将涉及:
- 创建新的 Photos::ThumbnailsController
- 将“/photos/:id/thumbnail”路由到此 Controller (因此我的示例网址为“/photos/foo/thumbnail”)
- 为此 Controller 创建索引操作(可能没有其他操作)
- 让索引操作呈现包含列表项代码的部分。 (此时将局部 View 设为完整 View 可能是有意义的)。
- 当我想将缩略图添加到列表中时,对“/photos/:id/thumbnail”进行 AJAX 调用。
不过,为一个部分/ View 提供一个完整的其他 Controller /资源似乎有点矫枉过正。有更好的办法吗?
关于jquery - Rails 中通过 AJAX RESTful 获取 HTML 部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2046414/