0

我已经简化了一个我必须解决的问题

我有一条看起来像这样的路线

namespace :client do
  resources :thing, :only => [:index]
end

和简单的 rspec 测试

describe Client::ThingController do
  describe "GET 'index'" do
    it "returns http success" do
      get 'index'
      response.should be_success
    end
  end
end

但是我想做的是改变我用来访问资源的 url

/client/thing.json

/api/client/v1/thing.json

1) 如何更新我的路线和 rspec?

如果我想参数化 uri 以便我可以提取 api_version

/api/client/[api_version]/thing.json

2)这将如何影响我的路线和简单的 rspec 测试?

4

1 回答 1

1

我之前尝试过@Mori 在发布之前的建议,但没有建议的多条路线,我应该在原始帖子中提到这一点。

我最终得到的工作是:

1)在routes.rb我添加

match "api/client/:api_version/thing" => 'client/thing#index'

注意:缺少的前导 '/' 即match "/api/...=>match "api/...它似乎对rspec.

2)在我的 rspecthing_controller_spec.rb我现在有这个

describe Client::ThingController do
  describe "GET 'index'" do
    it "returns http success" do
      get 'index', :api_version => 'v1'
      response.should be_success
    end
  end
end

routes.rb我之前很接近,但即使我可以在浏览器中导航到 URL,但它是领先的 '/'让我感到震惊。

于 2012-06-19T22:20:41.893 回答