Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 出于某种原因,命名路由在功能测试中不起作用_Ruby On Rails_Routes_Functional Testing - Fatal编程技术网

Ruby on rails 出于某种原因,命名路由在功能测试中不起作用

Ruby on rails 出于某种原因,命名路由在功能测试中不起作用,ruby-on-rails,routes,functional-testing,Ruby On Rails,Routes,Functional Testing,在我的测验中,控制器功能测试: post :statements 返回-> ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"statements"} 但我的路线是这样的: quizzes_statements /quizzes/statements(.:format) quizzes#statements {:any=>[:OPTIONS, :POST

在我的测验中,控制器功能测试:

post :statements
返回->

ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"statements"}
但我的路线是这样的:

quizzes_statements  /quizzes/statements(.:format)  quizzes#statements {:any=>[:OPTIONS, :POST]}
My routes.rb看起来是这样的:

match '/quizzes/statements' => 'quizzes#statements', any: [:OPTIONS, :POST]
如果我在测试中运行这个:

extend Rails.application.routes.url_helpers
quizzes_statements_path
返回:

=> "/quizzes/statements"
但如果我这样做:

post quizzes_statements_path
我得到了同样的错误:

ActionController::RoutingError: No route matches {:controller=>"quizzes", :action=>"/quizzes/statements"}
有人知道这里会发生什么吗?

使用以下命令:

match '/quizzes/statements' => 'quizzes#statements', via: [:options, :post]
在控制器(功能)测试中,您只能访问此控制器内的操作,用符号表示

e、 g

注意功能测试中的
get
post
方法与集成测试中的方法完全不同,尽管它们的名称相同。您可以在集成测试中使用命名路径,而不会出现任何问题。e、 g

post statement_path

因此,修复方法是,不要在功能测试中使用命名路径。直接采取行动。

科蒂·索拉特(Kirti Thorat)真是太棒了。非常感谢你。ॐ
post statement_path