resources :reviews, :only => [:list_all, :new, :create] do
root :to => "reviews#list_all"
end
To powyżej jest w przestrzeni nazw :admin
Formularz do tworzenia nowej recenzji wywołuje admin_reviews_path metodą POST, jednak w logach pojawia mi się coś takiego:
Started POST "/admin/reviews" for 127.0.0.1 at 2010-11-01 18:31:30 +0100
Processing by Admin::ReviewsController#list_all as HTML
W efekcie ląduję w admin_reviews_root_path z params[:review] i niezapisanym rekordem.
Rails 3.0.1. Czy może mieć znaczenie to, że Review belongs_to User?
Co tu jest nie halo?
Dałeś :root w środku reviews, dlatego wybrana jest akcja, na którą reviews wskazuję. Nie mam pojęcia po co zmieniasz nazwę index na list_all, ale ja bym to zrobił tak:
get "/reviews", :to => "reviews#list_all"
resources :reviews, :only => [:new, :create]
Wpisy wyżej mają wyższy priorytet, więc powinno załatwić sprawę. Przy czym jeżeli jedynym argumentem za zmianą nazwy index na list_all jest “bo mię się nazwa podoba bardziej”, to raczej zostawiłbym to bez zmian.
Muszę mieć list_all, bo index wyświetla tylko recenzje należące do użytkownika o określonym :id. Poza tym w międzyczasie się okazało, że miałem zdublowany wpis root w innym miejscu routes.rb, i dlatego wszystko się sypało. Dzięki.