vista validar una rutas rails parciales nueva formulario crear controladores ruby ruby-on-rails-3 resources routes dry

ruby - validar - rutas rest en rails



Rails 3-Restricción de formatos para la acción en las rutas de recursos (4)

Debe envolver esas rutas en un ámbito si desea restringirlas a un formato específico (por ejemplo, html o json). Restricciones desafortunadamente no funcionan como se esperaba en este caso.

Este es un ejemplo de tal bloque ...

scope :format => true, :constraints => { :format => ''json'' } do get ''/bar'' => "bar#index_with_json" end

Puede encontrar más información aquí: https://github.com/rails/rails/issues/5548

Esta respuesta está copiada de mi respuesta anterior aquí ..

Rutas de carriles: limitación de los formatos disponibles para un recurso

Tengo un recurso definido en mis rutas.

resources :categories

Y tengo lo siguiente en mi controlador de categoría:

def show @category = Category.find(params[:id]) respond_to do |format| format.json { render :json => @category } format.xml { render :xml => @category } end end

La acción del controlador funciona bien para json y xml. Sin embargo, NO quiero que el controlador responda a las solicitudes de formato html. ¿Cómo solo puedo permitir json y xml? Esto solo debería ocurrir en la acción de mostrar.

¿Cuál es la mejor manera de lograr esto? ¿También hay algunos buenos consejos para SECAR el bloque responder_?

Gracias por tu ayuda.


Descubrí que esto parecía funcionar (gracias a @Pan por señalarme en la dirección correcta):

resources :categories, :except => [:show] resources :categories, :only => [:show], :defaults => { :format => ''json'' }

Lo anterior parece forzar al enrutador a enviar una solicitud sin formato, a la acción de mostrar, como json de manera predeterminada.


Puede hacer lo siguiente en su archivo routes.rb para asegurarse de que solo la acción show esté restringida a json o xml:

resources :categories, :except => [:show] resources :categories, :only => [:show], :constraints => {:format => /(json|xml)/}

Si esto no funciona, puede intentar asociar explícitamente la acción:

resources :categories, :except => [:show] match ''categories/:id.:format'' => ''categories#show'', :constraints => {:format => /(json|xml)/}


constraints no funcionaban para las solicitudes POST y luego probé los defaults para todos.

namespace :api, :defaults => { :format => ''json'' } do namespace :v1 do resources :users do collection do get ''profile'' end end post ''signup'' => ''users#create'' post ''login'' => ''user_sessions#create'' end end

Estaba usando Rails 4.2.7