我知道这个问题已经在 SO 上被问过几次,但我很好奇以不同的方式做这件事。在我的 Ruby on Rails 应用程序中,我的UsersController.rb控制器上有一个名为list的操作。我希望这个列表能够回应 3 种不同的事情
- 页面本身。渲染我指定的用户的整个页面
- 我指定的页面的 JSON 用户列表
- 我指定格式为 HTML 的页面行的部分视图。
想象一个完整的页面(页眉、页脚、所有内容),其中包含一个包含第 1 页用户的表格。当我单击第 2 页时,我想启动一个 ajax 请求,返回到相同的控制器操作,只为我提供第 2 页的 html 行。我还想保留我的 JSON API,仍然允许我的控制器在被询问时返回 JSON 列表。我想它看起来像这样。
class UsersController < ApplicationController
def list
respond_to do |format|
format.html # RETURNS MY VIEW
format.json # RETURNS MY JSON LIST
format.partial_html # RETURNS MY PARTIAL HTML
end
end
end
无论如何在RoR中实现这一点?还是我注定不得不在我的控制器中创建另一个动作,只是为了返回技术上相同的数据?
我可以通过指定我自己的 MIME 类型来实现这一点吗?我应该将部分蛇作为 XML 返回类型吗?