2013-10-02 127 views
0

我正在使用Rails 4.0,并试图获得以下路由:Rails 4.0 config/routes.rb问题想要:http:// localhost/api/v1 /:controller /:id

class Api::V1::MyController 
    def get # maps to http GET 
    end 

    def post # maps to http POST 
    end 

    ... Same for PATCH PUT DELETE 
end 

我找不出正确的routes.rb。

我尝试几种变化:

namespace :api do 
    namespace :v1 do 
    match ':controller(/:action(/:id))', via: [:get, :put, :post, :patch, :delete] 
    end 
end 

结果错误:

match '/api/v1/:controller(/:action(/:id))', via: [:get, :put, :post, :patch, :delete] 

结果错误 “控制器段是不是一个命名空间块内允许”:“在自动加载常量时检测到循环依赖性ApiController“

T他是我想的网址是什么样子:

http://www.localhost.com/api/v1/my_controller/1234 
or eventually: 
http://www.localhost.com/api/v1/photos/1234 
http://www.localhost.com/api/v1/users1234 
http://www.localhost.com/api/v1/albums/1234 
http://www.localhost.com/api/v1/puppies/1234 
+0

你想让url看起来像什么? – dax

+0

@dax重新解决了一个问题,我已经更新了它 - ty – Daniel

回答

1

路线一般不与控制器名称为PARAM做 - 他们也许还可以,但我真的不知道。我想试试this

namespace :api do 
    namespace :v1 do 
    resources :photos, :puppies, :socks, :bits_of_string 
    end 
end 
+0

我试图按照指南,建议以http://www.localhost.com/resource/:id的方式使用HTTP动词并用动词来描述必要的动作,而不是使用动作。该指南是由apigee – Daniel

+0

以...的方式?你可以使用'http动词',但如果你正在创建特定的动作,你只需要它们。'资源:x'创建所有的资源,包含给定模型的所有动作 – dax

+0

哦。面对掌。我看不到树林。 – Daniel