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コーディングする必要があります)-API呼び出しに追加のサブドメインを使用して、 Dailymileが行っているようにJSON形式の出力のみを返すこともできます。allapi.example.com

また、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 に答える