Question

J'ai vraiment touché un mur et h besoin d'aide! Merci pour la lecture de ce bien!

Je suis en train d'écrire une application qui parle à mon ROR serveur web pour les requêtes de base de données et fonctionne très bien grâce à ActiveResource. Mais je dois maintenant aussi télécharger des fichiers sur le serveur, et je prévois d'utiliser ASIHTTPRequest qui ressemble beaucoup, mon problème est que je ne suis pas sûr de savoir comment remettre la requête POST sur le côté ROR ... J'utilise paperclip mais ont vraiment frappé un mur de briques.

Du côté ASIHTTP J'écris simplement:

[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"asset[image]"];

et sur le côté rubis que je fais ...

class Asset < ActiveRecord::Base
   validates_attachment_presence :image
    has_attached_file :image
end

class AssetsController < ApplicationController  
    protect_from_forgery :only => [:update, :destroy] 
.....

Mais il échoue toujours, je suis sûr qu'il a quelque chose à voir avec le jeu de données de formulaire POST, mais je suis complètement bloqué.

Je reçois l'erreur:

 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
     

`créer '

Toute aide serait très très chaleureusement reçu.

Chris

Merci!

Était-ce utile?

La solution

La première chose que je voudrais vérifier avec faire le téléchargement donne le nom du paramètre à ce file_column (ou quoi que, personnellement j'utiliser Paperclip) s'attend.

Si vous avez quelque chose comme:

class Entry < ActiveRecord::Base
    file_column :image
end

Vous devez vous assurer que le paramètre (formulaire nom du champ) correspond à ce qui est attendu. Pour l'exemple ci-dessus serait:

name="entry[image]"

En outre, assurez-vous que vous faites un poste de forme multipart, non seulement la norme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top