现在超级难倒 - 跑道3.2.17
我有一个路径助手:
partner_documents_partner_documents_path
正确生成此路径:
/en/partner/documents/partner_documents
根据我的控制台识别并正确映射到所需的控制器操作:
[12] » r = Rails.application.routes
=> #<ActionDispatch::Routing::RouteSet:0x007fb828169a58>
[13] » r.recognize_path("en/partner/documents/partner_documents")
=> {
:action => "partner_documents",
:controller => "project/partner/documents",
:locale => "en"
}
但是,在我的浏览器中,当尝试导航到该路径时(期望上述控制器操作执行此操作),我提供了一个不同的控制器,一个没有定义动作的(正确的)。
这是我收到的错误:
AbstractController::ActionNotFound at /en/partner/documents/partner_documents
The action 'partner_documents' could not be found for Project::DocumentsController
它应该击中的控制器,位于上方路径(project/partner/documents
)的控制器是Project::Partner::DocumentsController
,不是 {{1} }。
起初我觉得我的控制台和本地服务器的环境之间可能存在某些问题 - 但事实并非如此。此外,错误页面上显示的请求参数甚至显示正确的控制器路径:
Project::DocumentsController
这是Request parameters
{
"action"=>"partner_documents",
"controller"=>"project/partner/documents",
"locale"=>"en"
}
中的相关条目:
routes.rb
这里发生了什么?
答案 0 :(得分:0)
该问题源于不当包含。我不知道为什么我没有得到“未初始化的常量”错误,而不是将其重定向到另一个控制器,但在控制器中我试图击中我有这个:
class Project::Partner::DocumentsController < Project::PartnerController
include EsignatureHelper
我需要的是:
class Project::Partner::DocumentsController < Project::PartnerController
include Esignatures::EsignatureHelper