Problem z AJAX-em przy metodzie POST używając RESTful

Witam!

Mam problem z rutingiem, używając RESTful. Pragnę pobrać zawartość wyrenderowanej akcji jednego z kontrolerów za pomocą AJAX-a metodą POST.

Wg wskazówek na Guides RoR dodałem trasę:

map.resources :photos, :member => { :prepare => :post}

Mój kontroler:

class PhotosController < ApplicationController def prepare respond_to do |format| format.js { render "prepare.html.erb", :layout => false } end end end
Żądanie ajaxowe POST-em wysłałem pod adres “/photos/1/prepare”, próbowałem też “/photos/prepare”, ale nie działało… Pojawiał się błąd, że nie ma takiej trasy lub obsługuje tylko metody GET, DELETE i PUT. Zadziałało dopiero, kiedy zmieniłem nazwę metody na “create”.

Proszę o wskazówki:

  1. Jak porpawnie dodać trasę dla akcji “preview” typu “member” dla metody POST do tras rutera zgodnych z RESTful?
  2. Jaki jest poprawny URL do tej akcji oraz jakie zostały utworzone dla tej trasy helpery widoku dla generowania “url” i “path” dla zasobu?

Z góry dziękuję :slight_smile:

Teraz tak sobie pomyślałem, że pewnie URL mam błędny. Widzę, że powinien być URL “/photos/1;prepare”… Czy to zadziała poprawnie? (nie mam w tej chwili możliwości sprawdzenia tego) Czy member route obsługuje metodę POST?

Jeśli ma być w zgodzie z RESTful, to ortodoksi powiedzą Ci, że nie powinno być akcji preview, tylko powinieneś użyć show. Aczkolwiek tak jak to dodajesz, składniowo jest poprawnie.

Poprawny url to: /photos/1/prepare
Helpery o który Ci chodzi to:

prepare_photo_path( photo ) prepare_photo_url( photo )
Tak jak to napisałeś, to powinno działać.

  1. Zrestartuj aplikację (możliwe, że router nie załadował nowych tras).
  2. Jeśli to nie pomogło, to masz pewnie coś nie tak z javascriptem, który woła podgląd.
  3. Żeby wyświetlić możliwe ścieżki i helpery skorzystaj z:
rake routes