Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

Routingi Rails - dziwny konflikt argumentów :as i :collection

Krzysztof Rygielski | 2010-03-23 13:36 | Kategorie: Rails

Przy pracy nad jednym projektem RoR natknałem się na dziwne zachowanie. Wygląda to na jakiś konflikt między opcjami dodawania routingu. Może to bug a może nie, nie wiem.

Miałem zdefiniowany następujący routing:

map.namespace :admin do |admin|
  ...
  admin.resources :directories, :as=>"directory", :member=>{:delete=>:put}, :collection=>{:search=>:get}
  ...
end

UżyÅ‚em tutal parametru :as aby zmienić Å‚aÅ„cuch znaków w wyÅ›wietlanym urlu w przeglÄ…darce z directories na directory. Poza tym używam sphinxa jaki silnika wyszukiwania i dodaÅ‚em metodÄ™ search do routingu przy użyciu :collection aby móc używać wygodnego helpera search_admin_directories_path. Po wpisaniu frazy wyszukiwania i wysÅ‚aniu jej pod adres metody search otrzymaÅ‚em taki oto komunikat o bÅ‚Ä™dzie:

Only get, put, and delete requests are allowed.

WydaÅ‚o mi siÄ™ to dziwne, gdyż w innej części aplikacji miaÅ‚em zastosowany prawie identyczny kod i dziaÅ‚aÅ‚o wszystko prawidÅ‚owo. JedynÄ… różnicÄ… byÅ‚o użycie w tym routingu parametru :as. SpróbowaÅ‚em usunąć ten parametr i problem znikÅ‚... TrochÄ™ googlaÅ‚em na ten temat ale nic konkretnego nie znalazÅ‚em. Pozostaje mi zrezygnować z parametru :as, gdyż jego użycie nie jest niezbÄ™dne tak jak wyszukiwarka.

Jeszcze kiedyś poszukam rozwiązania tego problemu, gdyż sprawa mnie nieco zaintrygowała :-)