ruby-on-rails - not - rails-ujs
Rails 3 forma remota: ¿Cómo especifico el tipo de contenido? (2)
Para Rails 5, la forma correcta es establecer datos de datos de atributos data: { type: :json }
.
Estoy usando Rails 3.2, tengo un formulario y quiero que se publique a través de ajax y que el controlador devuelva json.
Estoy usando form_for helper como tal:
= form_for(@object, :remote => true, :format => :json) do |f|
....
Mi método de creación de controlador de objetos se ve así:
def create
respond_to do |format|
if @object.save
format.html { redirect_to @object }
format.json { render json: @object, status: :created, location: @object }
else
format.html { render action: "new" }
format.json { render json: @object.errors, status: :unprocessable_entity }
end
end
end
El formulario se envía ajaxly como se esperaba. ¡Pero el controlador está devolviendo html, no json!
Inspeccionar la solicitud con Firebug y, por supuesto, el encabezado http Content-Type en la solicitud ajax se está configurando en application / html.
La documentación en torno a esto es bastante escasa, formato =>: json parece simplemente anexar ".json" a la acción de formularios, en realidad no modifica ningún encabezado http.
También lo intenté: content_type =>: json sin efecto.
No puedo simplemente codificar el controlador para devolver json ya que hay otros lugares donde quiero que devuelva html ...
Entonces, ¿alguien sabe cómo decirle al controlador que represente json cuando use form_for?
Gracias por cualquier ayuda
Puede establecer el tipo de contenido con:
= form_for(@object, :remote => true, :html => {:''data-type'' => ''json''})
Como se describe en rails.js línea 106.