rails not form example ruby-on-rails ajax ruby-on-rails-3 forms ujs

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 } .

Documentos de JQuery UJS

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.