Grupowanie kontrolerów

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 :frowning:

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 :confused:

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 :slight_smile:

[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ć :smiley:

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

Działa! :slight_smile: Dzięki wielkie :slight_smile:

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.