[英]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.