1

我有点问题。导航到我的网站时,我想posts成为默认资源(这是一个博客:)

www.example.com/ #=> posts#index

www.example.com/15 #=> posts#show

等等。但是,我希望能够打开一个可以在我的投资组合中使用的 API。我可以使用该respond_to format.json块来允许这样做:

www.example.com/15.json

但我不知道如何将索引操作输出为 json。以下是我目前的路线:

resources :posts, :path => ''

如何使用 JSON 扩展访问索引操作?对不起,如果这没有任何意义。

4

2 回答 2

2

您的意思是:如何在浏览器的地址栏中编写一个 url 以获取 JSON 格式的索引?

只需保留您的根索引路径,posts#index 允许 API 调用/posts/all.json(当然,您必须all自己编写操作代码) - 您还可以为api.example.comAPI 调用使用额外的子域,并只为它们返回 JSON 格式的输出,就像 Dailymile正在做的那样。

另外:我认为 API 最好有一个线索词,而/posts/<what I want from posts>不是空白索引/- 旧的,好的说法是好的函数名是最好的函数文档

于 2012-08-28T12:45:27.173 回答
2

首先,你不需要:path => ''零件。为了使帖子索引成为您的根路由,只需执行root to: "posts#index"(使用新的哈希语法)。

为了在您的索引操作中呈现一组帖子,只需respond_to在您的控制器操作中执行块,如下所示:

def index
  @posts = Post.all
  respond_to do |format|
    format.html # render index.html
    format.json { render @posts }
  end
end

为了通过 json 访问这个索引操作,只需.json作为格式传递。您还可以在路由中定义默认格式,如下所示:

resources :posts, defaults: { format: :json }
于 2012-08-28T12:45:58.407 回答