我正在使用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