【问题标题】:rails routes "uninitialized constant CoursesController"rails 路线“未初始化的常量 CoursesController”
【发布时间】:2014-02-04 09:00:01
【问题描述】:

我在一个 Rails 项目中工作,我添加了以下路线:

get '/courses/:invitation_code'       =>  "courses#find_invitation"

在我的控制器上,我有以下操作:

def find_invitation
    @course = Course.where(["invitation_code = ?", params[:invitation_code]])
    if !@course.empty?
        respond_to do |format|
            format.html
            format.json {  render json: @course, success: true, error: false  }
        end
    end
end

但是,当我尝试访问 localhost:3000/course/demo123 时,我收到以下错误:

/courses/demo123 处的 ActionController::RoutingError 未初始化 常量 CoursesController

我不明白为什么。这是一个有设计和新项目的项目,所以我不知道我是否必须做其他事情才能使这个动作起作用。

提前感谢您的帮助。

【问题讨论】:

  • 你的控制器叫什么名字?
  • 类 Admin::CoursesController

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


【解决方案1】:

您必须在路由中指定控制器的命名空间。

尝试改变:

get '/courses/:invitation_code'       =>  "courses#find_invitation"

到:

get '/courses/:invitation_code'       => 'admin/courses#find_invitation'

【讨论】:

  • 如果我进行了更改,我不会收到错误消息,但我会被重定向到我的“/登陆”页面:s
  • @Jean 可能是另一个问题,与此无关。也许你在Admin::ApplicationController 中有一个before_filter 来执行重定向。您可能可以在应用日志中找到所需的所有信息。
【解决方案2】:

使用这个:

match '/courses/invitation_code'       =>  "courses#find_invitation"

【讨论】:

    【解决方案3】:

    如下转换你的根目录

    match '/courses/:invitation_code'       =>  "courses#find_invitation"
    

    url必须与段id如下

    localhost:3000/courses/demo123

    【讨论】:

    • 这可能是 OP 的错误,而不是代码的实际问题。问题是CoursesController 似乎不见了。
    猜你喜欢
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多