Ruby on rails Rails 3:如何测试路由器范围?

Ruby on rails Rails 3:如何测试路由器范围?,ruby-on-rails,testing,routes,Ruby On Rails,Testing,Routes,我使用的是Rails 3.0,routes.rb文件中包含以下内容: scope "/:location" do resources :agents end 所以我可以这样做: agents = Agent.where("location = ?", params[:location]) (可能有更好的方法来实现这一点….?我主要希望URL像:myurl.com/london/agents) 无论如何,我的问题在于测试(我仍在学习),如何在范围内工作: class AgentsContr

我使用的是Rails 3.0,routes.rb文件中包含以下内容:

scope "/:location" do
  resources :agents
end
所以我可以这样做:

agents = Agent.where("location = ?", params[:location])
(可能有更好的方法来实现这一点….?我主要希望URL像:
myurl.com/london/agents

无论如何,我的问题在于测试(我仍在学习),如何在范围内工作:

class AgentsControllerTest < ActionController::TestCase
  test "should get index" do
    get 'index'
    assert_response :success
  end
end
class AgentControllerTest
它只是得到一个路由找不到错误


任何帮助都会很好,谢谢。

因为您已经确定了资源的范围,您实际上无法通过任何操作直接访问代理控制器。所以调用get'index'实际上只是试图访问/agent。如果在浏览器中尝试此操作,也会失败

要获得成功,您必须提供如下位置参数:

get 'index', { :location => 'hawaii' }
希望有帮助

编辑:如果您想要额外访问代理\控制器(意味着位置是可选的),只需在路由文件中为其添加顶级资源:

resources :agents
太好了,谢谢!(我真的以为我试过了,但失败了,但现在一切都过去了,我一定是做错了什么——干杯)