Jak widać Admins tworzyłem tylko jako model (przez generator), potem dodałem kontroler.
Teraz nie mogę ustawić routów dla tego.
Proszę o pomoc.
No właśnie nie za bardzo widać, bo nie ma ani kontrolera, ani modelu.
Poza tym chcesz mieć /admins czy /admin - bo to robi różnicę?
Jeśli /admins, to musisz mieć model Admin (admin.rb) + AdminsController (admins_controller.rb) + views/admins/*, wtedy Twoje routes.rb powinny wyglądać tak:
Myblog::Application.routes.draw do
resources :admins
match 'add_admin' => 'admins#new', :as => 'add_admin'
resources :entries
root :to => 'entries#index'
end
Jeśli natomiast /admin, to musisz mieć model Admin (admin.rb) + AdminController (admin_controller.rb) + views/admin/*, a routes.rb powinno wyglądać tak:
Myblog::Application.routes.draw do
resources :admin
match 'add_admin' => 'admin#new', :as => 'add_admin'
resources :entries
root :to => 'entries#index'
end
Ponadto, wtedy musisz w /config/initializers/infelctions.rb napisać:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( admin )
end
Pytanie, czy to ma sens?
Zobacz teraz, jakimś cudem nie dodał się do gita model i kontroler admina - głupie IDE:/
git add .
tylko teraz w new szuka admins_path
Ja bym zrobił tak:
resources :admins, :path => "admin"
Tylko musisz mieć “AdminsController”, wtedy admins_path zwróci dobrą ścierzkę, a url będzie wyglądał tak jak chcesz, czyli:
/admin/new
Czyli muszę zmienic nazwę pliku i klasy AdminController na AdminsController?
Ok, z routami poradziłem sobie, wielkie dzięki. Jeszcze jeden mały dziwny bląd.
Jak uzupełnię formularz z błędami (ten przy add_admin), to mam:
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.errors
A przecież błędy wyświetlam tylko: if @admin.errors.any?
https://github.com/matiit/myblog/blob/master/app/views/admins/new.html.erb#L7
Tutaj masz zmienną @user, która jest równa nil.
HINT: poniżej errora masz kawałek kodu, z linią w której pojawił się problem. Skorzystaj z tego
huh, ok, racja, kod brałem w większości ze screencasta, zmieniłem nazwę modelu i kontrolera i przeoczyłem w jednym miejscu (;
Dzięki za cierpliwość