Problem z marszrutowaniem i form_for

Chcę zarządzanie pewnymi modelami przenieść do kontrolerów w przestrzeni nazw “admin”, wszystko pięknie, tylko schody się zaczynają gdy chcę wykorzystać tam “form_for”.

Fragment routes:

namespace :admin do resources :site resources :news resources :image end
Fragment tree:

. “”” . “”” app ƒ “”” controllers ƒ ƒ “”” admin ƒ ƒ ƒ “”” image_controller.rb ƒ ƒ ƒ “”” news_controller.rb ƒ ƒ ƒ ”” site_controller.rb ƒ ƒ “”” application_controller.rb ƒ ƒ ”” site_controller.rb ƒ “”” helpers ƒ ƒ “”” admin ƒ ƒ ƒ “”” gallery_helper.rb ƒ ƒ ƒ “”” image_helper.rb ƒ ƒ ƒ “”” news_helper.rb ƒ ƒ ƒ ”” site_helper.rb ƒ ƒ “”” application_helper.rb ƒ ƒ ”” site_helper.rb ƒ “”” mailers ƒ “”” models ƒ ƒ “”” image.rb ƒ ƒ “”” news.rb ƒ ƒ ”” site.rb ƒ ”” views ƒ “”” admin
Gdy mam kod:

=form_for @image, :html => {:multipart => true} do |f|

dostaję błąd:

No route matches {:action=>"create", :controller=>"admin/image"}

pomimo że:

$ rake routes [...] admin_image_index GET /admin/image(.:format) {:controller=>"admin/image", :action=>"index"} POST /admin/image(.:format) {:controller=>"admin/image", :action=>"create"} new_admin_image GET /admin/image/new(.:format) {:controller=>"admin/image", :action=>"new"} edit_admin_image GET /admin/image/:id/edit(.:format) {:controller=>"admin/image", :action=>"edit"} admin_image GET /admin/image/:id(.:format) {:controller=>"admin/image", :action=>"show"} PUT /admin/image/:id(.:format) {:controller=>"admin/image", :action=>"update"} DELETE /admin/image/:id(.:format) {:controller=>"admin/image", :action=>"destroy"}
Jak już potem kombinowałem i ostatecznie udało mi się coś zrobić żeby ten błąd nie występował (w routes pozmieniałem, jednak na pewno tak nie powinno być jak tam kombinowałem), to kolejny problem że formularz nie jest wysyłany do kontrolera w przestrzeni admin.

Nie umiem wykombinować co tutaj jest źle, wcześniej w marszrutowaniu nie korzystałem z namespace. Jak patrzałem na guides, to jest niby ok…

Spróbuj form_for([:admin, @image], :html => { :multipart => true })

form_for - dokumentacja

[quote=hosiawak]Spróbuj form_for([:admin, @image], :html => { :multipart => true })

form_for - dokumentacja[/quote]
Nie ruszyło niestety od razu, ale zrobiłem jeszcze jedną poprawkę:

routes.rb

[...] resources :images, :controller => "image" [...]
i już śmiga, dzięki za pomoc!

konwencja jest taka, aby nazwy kontrolerów były liczbą mnogą;)

No tak właśnie widzę, muszę zacząć się stosować do tego :wink: