2009-07-04 13 views
5

Szukam implementacji negocjacji treści dla niektórych zasobów w aplikacji Rails. Używam Mootools i prawdopodobnie będę mógł dostosować typ zawartości akceptowany przez XMLHTTPRequest do "application/json".Negatywne negocjowanie treści w szynach

Czy istnieje sposób, aby podnieść te informacje w moim kontrolerze i wygenerować odpowiedzi JSON zamiast XHTML?

Staram się unikać robi coś takiego:

http://site/resource/1?format=JSON 

... jak to brudzi moje URL, nakłada pewną redundancję i nie jest tak elastyczny.

Dzięki!

Odpowiedz

4

Można użyć respond_to zwrotka w metodzie kontrolera, tak:

respond_to do |format| 
    format.html { # Generate an HTML response... } 
    format.json { # Generate a JSON response... } 
end 

Szyny określa format odpowiedzi na podstawie wartości nagłówka HTTP Accept złożonego przez klienta.

1

Na pewno http://site/resource/1.json powinien działać? być może trzeba będzie go skonfigurować w środowisku Railsowym, ale w zależności od aktualnej wersji Railsów, wątpię w to.

0

Po wielu badaniach, gdy szyny mają wszystko, aby automatycznie wybrać szablon do wydruku, nadal wymaga połączenia z respond_to dla każdego, który chcesz obsługiwać.

8

http://site/resource/1.json nie jest prawidłowe użycie negocjacji treści. Chodzi o to, że URL powinien pozostać taki sam, ale klient prosi o określoną reprezentację (JSON, PDF, HTML itp.) Na podstawie nagłówków HTTP, które wysyła z żądaniem.