0

HTMLインターフェースを介して必要なすべてのことを実行するRailsアプリがあります。次に、機能の一部へのアクセスを提供するAPIを追加したいと思います。

Routes.rbを使用して、一部のAPIコントローラーアクションを別のコントローラーのアクションに選択的に転送するにはどうすればよいですか?

私は以下を試しました:

私の通常のコントローラールートは、以下を使用して正常に機能します。

match 'stuff' => 'stuff#index'
get 'stuff/index'
get 'stuff/some_get_action'
post 'stuff/some_post_action'

しかし、APIを試してみると:

match 'api' => 'api#index'
match 'api/some_get_action' => 'stuff#some_get_action', :via => :get
match 'api/some_post_action' => 'stuff#some_post_action', :via => :post

また...

match 'api' => 'api#index'
get 'api/some_get_action', :to => 'stuff#some_get_action'
post 'api/some_post_action', :to => 'stuff#some_post_action'

エラーが発生します。/ api / indexに移動して、API URLをテストするためのフォームを含むHTMLページをサーバーに移動すると、url_forは「ルートが一致しません...」という「ルーティングエラー」例外を発生させます。

4

1 に答える 1

1

':as =>'を含めて、リンクパスとして使用する可能性のあるルート名を定義することをお勧めします。

get 'api/some_get_action' => 'stuff#some_get_action', :as => 'some_get_action'

インデックスファイルのリンクパスには「some_get_action_path」が含まれます。'match'または'get'がパス名に自動的に解決されるかどうかはわかりません。これは、':as'を設定することで確実に解決されます。

このページをテスト用に設定するというあなたのアイデアが気に入っています。私はいつもコンソールでそれをやっています、それは単にリンクをクリックするより確かに難しいです。リンクは、おそらく:httpではなく:jsonリクエストであると推測する必要があります。

于 2012-06-23T17:57:00.963 に答える