Jquery 在Rails中通过AJAX RESTfully获取HTML部分内容

Jquery 在Rails中通过AJAX RESTfully获取HTML部分内容,jquery,ruby-on-rails,ajax,rest,partial-views,Jquery,Ruby On Rails,Ajax,Rest,Partial Views,在我的Rails应用程序中,我有一个名为“Photo”的模型和一个photocontroller。正如预期的那样,我已经RESTfully路由URL,以便URL“/photos”返回所有照片(作为缩略图)的HTML呈现列表,“/photos/foo”返回照片的HTML呈现表示形式,并带有“foo”的名称。(我也做XML、JSON和二进制表示,但它们在这里并不相关。) 我想让列表页面在初始加载时显示照片缩略图的子集,然后通过AJAX(特别是jQuery)将更多缩略图动态添加到我的列表中。我已经有了

在我的Rails应用程序中,我有一个名为“Photo”的模型和一个photocontroller。正如预期的那样,我已经RESTfully路由URL,以便URL“/photos”返回所有照片(作为缩略图)的HTML呈现列表,“/photos/foo”返回照片的HTML呈现表示形式,并带有“foo”的名称。(我也做XML、JSON和二进制表示,但它们在这里并不相关。)

我想让列表页面在初始加载时显示照片缩略图的子集,然后通过AJAX(特别是jQuery)将更多缩略图动态添加到我的列表中。我已经有了在照片/索引视图中呈现单个照片列表项(基本上是一个
  • )的HTML。由于jQuery可以,我认为最好的做法是将列表项代码提取到部分中,然后通过AJAX将该部分加载到列表中

    我的问题是:什么是将HTML从部分中取出并放入DOM的最佳方法


    (我已经有了一个实现的想法;我将把它作为一个答案发布,以允许适当的投票和评论)。

    我认为最安静的方式是将照片的列表项表示/视图作为照片的子资源。这将涉及:

    • 创建新照片::ThumbnailsController
    • 将“/photos/:id/thumbnail”路由到此控制器(因此我的示例URL为“/photos/foo/thumbnail”)
    • 为此控制器创建索引操作(可能没有其他操作)
    • 让index操作呈现包含列表项代码的部分。(在这一点上,让局部视图成为完整视图可能是有意义的)
    • 当我想将缩略图添加到列表中时,对“/photos/:id/thumboil”进行AJAX调用

    但是,为一个部分/视图使用一个完整的其他控制器/资源似乎有点过分了。有更好的方法吗?

    我认为最安全的方法是将照片的列表项表示/视图作为照片的子资源。这将涉及:

    • 创建新照片::ThumbnailsController
    • 将“/photos/:id/thumbnail”路由到此控制器(因此我的示例URL为“/photos/foo/thumbnail”)
    • 为此控制器创建索引操作(可能没有其他操作)
    • 让index操作呈现包含列表项代码的部分。(在这一点上,让局部视图成为完整视图可能是有意义的)
    • 当我想将缩略图添加到列表中时,对“/photos/:id/thumboil”进行AJAX调用

    但是,为一个部分/视图使用一个完整的其他控制器/资源似乎有点过分了。有更好的方法吗?

    不是答案,而是一个建议:查看(查看源代码)其他玩家是如何完成类似于或的无限滚动的(当然也在Rails中)

    结果 (克雷格编辑)

    海斯塔克打电话给我。这意味着他们可能在调用时使用了不同的Rails格式。我考虑过这个,但我不太喜欢,因为:

    • 这取决于URL的格式(本例中为js),该格式不用于任何其他目的(并且永远不会)
    • 它依靠JavaScript(以及bastardized JS/HTML)来完成工作。为了一致性、可重用性和可缓存性,我更愿意使用纯HTML

    Bing无休止的搜索JS被缩小了,所以我没有花太多的时间来解释它。

    不是答案,而是一个建议:查看(查看源代码)其他一些玩家是如何完成类似于或的无限滚动的(当然也在Rails中)

    结果 (克雷格编辑)

    海斯塔克打电话给我。这意味着他们可能在调用时使用了不同的Rails格式。我考虑过这个,但我不太喜欢,因为:

    • 这取决于URL的格式(本例中为js),该格式不用于任何其他目的(并且永远不会)
    • 它依靠JavaScript(以及bastardized JS/HTML)来完成工作。为了一致性、可重用性和可缓存性,我更愿意使用纯HTML

    Bing无休止的搜索JS被缩小了,所以我没有花太多时间来解释它。

    您的解决方案看起来非常可靠,并且遵循REST原则+谢谢,我试着这么做。问题是,对于大约2个HTML标记来说,这似乎是一个很大的麻烦:-P但如果没有其他问题出现,我会继续使用它。“为一个部分/视图使用一个完整的其他控制器/资源似乎有点过头了”-同意,但为了清晰起见,我也这样做了+1这就是我喜欢这个解决方案的原因;它与MVC和REST都非常一致。您的解决方案看起来非常可靠,并且遵循REST原则+谢谢,我试着这么做。问题是,对于大约2个HTML标记来说,这似乎是一个很大的麻烦:-P但如果没有其他问题出现,我会继续使用它。“为一个部分/视图使用一个完整的其他控制器/资源似乎有点过头了”-同意,但为了清晰起见,我也这样做了+1这就是我喜欢这个解决方案的原因;它与MVC和REST都非常一致。这是我最讨厌AJAX的地方之一:试图找出代码的哪一部分发生了神奇的变化-p这是我讨厌AJAX的原因之一:试图找出代码的哪一部分发生了神奇的变化-P