0

我有一个 Rails 应用程序,它可以通过 HTML 界面完成我需要它做的所有事情,现在我想使用一个 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' 肯定会。

我喜欢您设置此页面进行测试的想法。我总是在控制台中做这件事,这肯定比简单地点击一个链接更难。您的链接可能需要推断它们是 :json 请求,而不是 :http。

于 2012-06-23T17:57:00.963 回答