2012-08-28 35 views
0

我遇到了一些問題。我想posts成爲默認瀏覽資源到我的網站的時候(這是一個博客:)Rails根資源JSON

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擴展訪問索引操作?對不起如果這沒有任何意義。

回答

1

您的意思是:如何在瀏覽器的地址欄中編寫url以獲取JSON索引?

只要保持你的根索引路徑posts#index允許API調用/posts/all.json(你必須編寫自己的all行動,當然) - 你也可以使用其他子域api.example.com您的API調用,只返回JSON格式的輸出對他們來說,like here Dailymile正在做。

另外: 我認爲這是一個更好的API有線索詞/posts/<what I want from posts>,而不是一個空白指數/ - 老,好話說,良好的函數名是最好的函數文檔

+0

乾杯!我只是測試了一下,發現了這個問題。在未來,我可以只添加一個API。*子域:) – andy

3

首先,你不需要: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 } 
+0

這將不會工作,因爲我需要'www.example.com/1'去'posts#show'動作 – andy

+0

工作就像一個魅力!這正是我所期待的,thx :) – ViniciusPires