我创建新操作时路由错误未初始化的常量

时间:2014-01-29 19:10:23

标签: ruby-on-rails ruby-on-rails-4 routes

我知道这是一个典型的问题。但我只是在rails中尝试路由,我得到了这个错误:

uninitialized constant UsersController

我不知道问题出在哪里。 我的应用程序的简历是一个简单的图书馆应用程序,用户可以在这里预订书籍并查看他们预订的书籍。 这是我的routes.rb

Brickstest2::Application.routes.draw do
  resources :books

  root "pages#home"    
  get "home", to: "pages#home", as: "home"
  get "inside", to: "pages#inside", as: "inside"


  devise_for :users

  namespace :admin do
    root "base#index"
    resources :users
  end

  resources :books do
    get :book_a_book, :as => "reserve"
  end

  resources :users do
    get :booked_books, :as => "reserved", :on => :member
  end

end

实际上当我收到路线时,我得到:

reserved_user_path
    GET  /users/:id/booked_books(.:format)   users#booked_books

在users_controllers.rb中我有:

 def booked_books
    @user = User.first(params[:user_id])
    #return unless @user == current_user
    @books = Books.where(:user = @user)
  end

booking_books的链接:

<%= link_to "My books", user_reserved_path(:user_id => current_user.id)%>

最后我的用户/ booked_books.html.erb:

<h1>My books</h1>
<%= @books.each do |book|%>
    <p><%= book.name %>
<% end %>

提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否已为User <{1}}子类的ApplicationController资源声明了一个控制器?

# app/controllers/users_controller.rb
class UsersController < ApplicationController

请注意,User模型的复数资源路由的精确命名约定为UsersController(请注意s)。我猜你已经命名了你的控制器类UserController,这对你的用例不起作用。

<强>更新

由于您已声明了控制器命名空间,因此您需要声明控制器类,如下所示:

# app/controllers/admin/users_controller.rb
class Admin::UsersController < ApplicationController

这应解决涉及命名空间的任何uninitialized constant UsersController错误。