繁体   English   中英

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

[英]Routing Error uninitialized constant when I create a new action

我知道这是一个典型的问题。 但是我只是尝试在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

到booked_books的链接:

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

最后是我的users / booked_books.html.erb:

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

提前致谢。

您是否为您的User资源声明了一个继承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错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM