responder_con ubicación ignorada en la solicitud GET

En cada paso de mi proceso de pago, se actualiza un pedido a través de un PUT solicitud. Sin embargo, uno de los estados tiene un formulario que se envía a un tercero que redirige a mi sitio, llamando al método de actualización con GET (sin control sobre esto).

¿Por qué mi respond_with el código parece estar totalmente ignorado y obtengo un Missing Template checkout/update ¿error? debería estar golpeando #edit.

CheckoutController.rb

before_filter :load_order

def update
  if @order.update_attributes(params[:order])
    @order.next
  end
  respond_with(@order, :location => checkout_state_url(@order.state))
end

rutas.rb

match '/checkout/update/:state' => 'checkout#update', :as => :update_checkout
match '/checkout/:state' => 'checkout#edit', :as => :checkout_state
match '/checkout' => 'checkout#edit', :state => 'client_details', :as => :checkout

preguntado el 03 de mayo de 12 a las 16:05

1 Respuestas

Parece que respond_with hace cosas diferentes según el verbo HTTP y si el recurso tiene errores. Ver aquí y aquí.

El siguiente código funcionó para mí:

def update
    if @order.update_attributes(params[:order]) && @order.next
        respond_with(@order) { |format| format.html { redirect_to checkout_state_url(@order.state) } }
    else
        respond_with(@order) { |format| format.html { render :edit } }
    end
end

contestado el 03 de mayo de 12 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.