我正在使用Rails 3.0,并且route.rb文件中包含以下内容:

scope "/:location" do
  resources :agents
end


所以我可以这样做:

agents = Agent.where("location = ?", params[:location])


(执行此操作可能有更好的方法。。?通常,我需要类似myurl.com/london/agents的URL)

无论如何,我的问题是测试(我仍在学习),如何在示波器上进行这项工作:

class AgentsControllerTest < ActionController::TestCase
  test "should get index" do
    get 'index'
    assert_response :success
  end
end


它只是得到一条路线,找不到错误。

任何帮助将是巨大的,谢谢。

最佳答案

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

为了获得成功,您必须提供一个位置参数,如下所示:

get 'index', { :location => 'hawaii' }


希望能有所帮助。

编辑:如果您想要对agent_controller的其他访问(意味着位置是可选的),只需在您的路由文件中为其添加顶级资源:

resources :agents

10-06 16:10