2011-12-13 10 views
6

En todas las páginas de mi aplicación, deseo un enlace a la versión JSON de la página actual. ¿Algún truco para hacer esto? Donde se volvió complicado fue cuando los parámetros adicionales '&' se incluyeron en la URL.¿Convertir URL a la versión JSON?

Así que las direcciones URL podría transponerse como:

'/users' => '/users.json' 

'/users?page=1&per_page=5' => '/users.json?page=1&per_page=5' 

Respuesta

8

Un ttribution para esta respuesta de Get url for current page, but with a different format, con modificaciones:

Ayudante:

def current_url(new_params) 
url_for params.merge(new_params) 
end 

Enlace:

<%= link_to "JSON of this page", current_url(:format=>:json) 
+0

como se dice en la pregunta que cita, debe duplicar los parámetros antes de usarlos. De todos modos, no dude en aceptar su propia respuesta. –

+0

Lo que era diferente era el requisito de "url_for: params => params.merge (new_params)", en lugar de solo "url_for params.merge (new_params)". –

+0

ooops lo siento, leí 'merge!' En lugar de 'merge' –

10

intente esto:

polymorphic_path(@user, :format => :json) 

(como se ve en este API doc)

alternativamente:

user_path(:id => @user.id, :format => :json) 
+0

necesito el enlace a la versión JSON en cada página, por lo que el enlace sería diferente para la ruta de esa página y yo podemos tener uno o muchos objetos asociados. ¿Hay alguna manera de simplemente ingresar la ruta de acceso con nombre de la página actual y anexar el formato: format =>: json? –

+0

encontré [esta pregunta] (http://stackoverflow.com/questions/5913525/get-url-for-current-page-but-with-a-different-format), debería ayudarlo –

+0

también, cuando lo necesito para establecer la configuración regional, pero para mantener la página actual, uso 'url_for (: locale =>: en)' por ejemplo. Funciona con ': locale', así que tal vez funcione con': format' –