2010-09-10 26 views
9

Tôi đang di chuyển phần lớn ứng dụng của mình vào không gian tên quản trị và trong khi có rất nhiều hướng dẫn liên quan đến điều này, tôi vẫn không thể quản lý. Tôi đã chủ yếu theo dõi this answer, cùng với bất kỳ kết quả nào Google đưa ra (tất cả đều có xu hướng đồng ý). Ai đó có thể cho tôi biết tôi đang làm gì sai nên tôi không mất ngủ nữa?Rails 3 Admin Namespace Issue

Dưới đây là thông báo lỗi:

loại sai lập luận Module (Lớp dự kiến)

app/controllers/application_controller.rb:1:in `<top (required)>' 
app/controllers/admin/admin_controller.rb:1:in `<top (required)>' 
app/controllers/admin/home_controller.rb:1:in `<top (required)>' 

routes.rb

namespace :admin do 
    root :to => "home#index" 

    resources :users 
end 

admin/admin_controller. rb

class Admin::AdminController < ApplicationController 

admin/home_controller.rb

class Admin::HomeController < Admin::AdminController 

admin/users_controller.rb

class Admin::UsersController < Admin::AdminController 

tôi chủ yếu là chắc chắn nó là cái gì đơn giản để có liên quan đến các mô-đun và tương tác bộ điều khiển, vì vậy tôi chưa bao gồm bất kỳ mã nào khác. Tuy nhiên, tôi nên tìm ra giải pháp ngay bây giờ và vui lòng cho tôi biết nếu có bất kỳ mã bổ sung nào được yêu cầu.

Cảm ơn.

+1

Có vẻ như chính xác đối với tôi ... – Arkan

+0

có thể là lớp Admin :: AdminController <:: ApplicationController –

Trả lời

0

Có thể bạn đã xác định điều gì đó là hằng số Admin?
Hãy thử một ứng dụng mới có cùng cấu trúc, sau đó thêm các phần từ phần hiện tại và xem vị trí nó bị hỏng (Không phải đề xuất tuyệt vời như vậy, huh?).

tôi sử dụng cùng một tổ chức cho admin như bạn dán ...

0

"sai kiểu lập luận Module (Lớp dự kiến)"

Điều này có nghĩa bạn đang xác định một 'lớp' nhưng tên đó đã được xác định như một 'module' ở một nơi khác. Tìm kiếm những gì có thể là ...

3

Tôi khuyên bạn nên đổi tên Admin::AdminController thành Admin::BaseController.

0

Bạn có thể làm theo mã dưới đây, Bộ điều khiển của bạn không sao, bạn có thể sử dụng các tuyến đường mà tôi đã chỉ định ở đây không.

class Admin::AdminController < ApplicationController 


class Admin::UsersController < Admin::AdminController 

Điều này cũng giống như những gì bạn đã viết, tôi nghĩ vậy.

namespace :admin do 
    resources :users do as_routes end 
end 
root :to => "home#index" 
6

tôi gặp phải vấn đề ngược lại "sai kiểu lập luận lớp (Mô-đun dự kiến)" và nó bật ra đã có một helper định nghĩa là một lớp thay vì một Module, vì vậy hãy thử tìm kiếm cho các lớp học được vô tình định nghĩa là module . Giống như một bộ điều khiển được định nghĩa như một Module.

+0

Cảm ơn bạn rất nhiều. : P đã giúp tôi. – rewolf

0

@Russell, tôi đã nhận rằng vấn đề có tạo ra mô hình AdminHelper (có nghĩa là để chứa những thông điệp giúp đỡ admin) :)

hãy cẩn thận trong việc đặt tên thứ!

0

Tôi gặp sự cố như vậy khi tôi sử dụng has_attached_file của kẹp giấy với thông số không hợp lệ.