jquery - Rails 中通过 AJAX RESTful 获取 HTML 部分内容

标签 jquery ruby-on-rails ajax rest partial-views

在我的 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/

相关文章:

jquery - 在输入字段中插入 Ajax 结果

jquery - 如果视口(viewport)低于设定宽度,则隐藏 DIV

javascript - 将选择选项附加到文本字段

html - Rails Backbone Marionette Assets 在更改时不再更新?

ruby-on-rails - 为什么我得到一个 ActiveRecord::Relation 对象?

javascript - 单选按钮/复选框未使用 AJAX 输入 MySQL DB

php - Yii2:根据相关表中的另一个字段自动填充字段

php - "Paginating"具有动态定义的按钮数量的滚动选项卡组

JavaScript,无法使其工作

ruby-on-rails - Ruby on Rails "invalid byte sequence in UTF-8"由于机器人