namespaced rails route在控制台中找到正确的控制器但不是实时的

时间:2015-01-08 05:24:22

标签: ruby-on-rails ruby-on-rails-3

现在超级难倒 - 跑道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

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

该问题源于不当包含。我不知道为什么我没有得到“未初始化的常量”错误,而不是将其重定向到另一个控制器,但在控制器中我试图击中我有这个:

class Project::Partner::DocumentsController < Project::PartnerController
  include EsignatureHelper

我需要的是:

class Project::Partner::DocumentsController < Project::PartnerController
  include Esignatures::EsignatureHelper