Witam,
Chciałem sobie zgrupować kontrolery do katalogu admin.
Mam taki kontroler w folderze admin: /controllers/admin/tables_controller.rb
W routingu wpisałem coś takiego (próbowałem też bez :controller):
resources :admin do
resources :tables, :controller => ‘admin/tables’
end
i gdy wywołuje http://localhost:3000/admin/tables pojawia się błąd: uninitialized constant AdminController
Gdy w routingu wpiszę: match ‘/admin/tables’, :to => ‘admin/tables#index’ to odpala mi ten kontroler.
Przepatrzyłem najrózniejsze przykłady z neta i jak narazie cały czas ten sam błąd
Help me!
Może niepoprawnie definiujesz nazwę klasy?
Powinna być poprzedzona modułem(w tym wypadku Admin), czyli :
class Admin::TablesController < ApplicationController
Definiuje klasę tak jak napisaleś…
to może spróbować umieścić resources :tables w namespace :admin:
namespace :admin do
resources :tables
end
Jeżeli nie to, to chyba nie pomogę i musisz liczyć na kogoś z większym doświadczeniem
zlw
February 28, 2012, 10:55pm
5
[code=ruby]# routing
namespace :admin do
resources :tables
end
controller
/app/controllers/admin/tables_controller.rb
class Admin::TablesController < ApplicationController
end[/code]
http://localhost:3000/admin/tables
musi działać
jeżeli chcesz odwoływać się przez /admin/tables do TablesController, to
scope :admin do
resources :tables
end
lub, jeżeli chcesz odwołać się przez /tables do Admin::TablesController
scope module: :admin do
resources :tables
end
http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing
Artur79
February 29, 2012, 1:58pm
7
można też tak class Admin::InvoicesController < Admin::AdminController
w AdminController możesz wrzucić coś co jest wymagane dla całego admina, np autentyfikacja albo ustawienie layoutu.