Subir a Ruby on Rails desde el iPhone usando ASIHTTPRequest
-
18-09-2019 - |
Pregunta
He realmente dio una necesidad pared y la mañana de alguna ayuda! Gracias por leer hasta aquí!
Estoy en el medio de escribir una aplicación que se comunica con mi ROR servidor web para solicitudes de base de datos y funciona muy bien gracias a ActiveResource. Pero ahora tengo que cargar también los archivos al servidor, y planeo usar ASIHTTPRequest la que se ve muy bien, aunque mi problema es que no estoy seguro de cómo entregar la solicitud POST en el lado ROR ... estoy usando un clip pero en realidad han chocado contra un muro de ladrillo.
En el lado ASIHTTP Simplemente estoy escribiendo:
[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"asset[image]"];
y en el lado de rubí que estoy haciendo ...
class Asset < ActiveRecord::Base
validates_attachment_presence :image
has_attached_file :image
end
class AssetsController < ApplicationController
protect_from_forgery :only => [:update, :destroy]
.....
Pero siempre falla, estoy bastante seguro de que tiene algo que ver con la forma de POST conjunto de datos, pero estoy completamente atascado.
Estoy recibiendo el error:
Parameters: {"assets"=>{"images"=>#<File:/var/folders/gM/gM15qjM2G3W0iVNaT1evD++++TI/-Tmp-/RackMultipart20091112-2285-2i0qq5-0>}} NoMethodError (You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.[]): app/models/asset.rb:2 app/controllers/assets_controller.rb:46:in
`crear '
Cualquier ayuda sería muy, muy agradecido recibió.
Chris
Gracias!
Solución
Lo primero que me gustaría comprobar con la realización de la carga se está poniendo el nombre del parámetro a lo file_column (o lo que sea, en lo personal me gustaría usar Paperclip) está a la espera.
Si usted tiene algo como:
class Entry < ActiveRecord::Base
file_column :image
end
Usted necesita asegurarse de que el parámetro (nombre de campo de formulario) corresponde a lo que se espera. Para el ejemplo anterior esto sería:
name="entry[image]"
Además, asegúrese de que está haciendo un anuncio impreso de varias copias, no sólo la norma.