2010-11-13 5 views
0

j'ai mis en place un formulaire avec le téléchargement d'images sur des rails à l'aide paperclip 3.0.1 sur Linux (même problème ci-dessous sur les rails 3.0.0 sur les fenêtres)téléchargement de fichier - ne peut pas convertir hachage en entier

Tout ce que je rentre dans ma forme, j'obtiens le Type Error "ne peut pas convertir hash en entier". La chose étrange est que cela a fonctionné 1 fois (formulaire soumettre + téléchargement de fichier). J'ai probablement changé quelque chose quelque part dans le code et cela n'a jamais fonctionné à nouveau. (Je ne peux pas où je tort wen)

Vue:

<% form_for(@account,:url=>{ :action=>'create' },:html => { :multipart => true }) do |f| %> 
    <%= render :partial => 'form', :locals => { :f => f } %> 
    <%= f.submit %> 
<% end %> 

_form:

<%= f.error_messages %> 
<%= f.text_field :company_name %><br /> 
<%= f.text_field :code %><br /> 
<%= f.text_field :website %><br /> 
<%= f.file_field :logo %><br /> 
<%= f.collection_select('industry_id', @industries, :id, :label, :include_blank=>true) %> 
contrôleur

:

def new 
    @industries = Industry.find(:all, :order => 'label') 
    @account = Account.new 
end 

def create 
    @account = Account.new(params[:account]) 
    @account.begin_date = DateTime.now 
    @account.active = 1 
    if @account.save #LINE 247: 
     flash[:notice] = 'Account was successfully created.' 
     redirect_to :action => 'show', :id => @account.id 
    else 
     render :action => 'new' 
    end 
    end 
modèle

:

has_attached_file :logo, 
    :styles => { 
    :thumb=> "100x100#", 
    :small => "150x150>", 
    :medium => "300x300>", 
    :large => "400x400>" }, 
    :url => "/logos/:id/:style/:basename.:extension", 
    :path => ":rails_root/public/logos/:id/:style/:basename.:extension" 

LOG:

Started POST "/accounts/create" for 127.0.0.1 at 2010-11-13 10:08:27 +0800 
[1m[36mSQL (31.2ms)[0m [1mdescribe `groups_users`[0m 
Processing by AccountsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ihg8Il2eHnMj/q9KmZPzOSB8W7NDs3hbpkEJ+WSHd10=", "account"=>{"company_name"=>"aa and co", "code"=>"aaco", "website"=>"aa.com", "logo"=>#<File:/usr/tmp/RackMultipart20101113-3624-oowopi>, "industry_id"=>"1"}, "commit"=>"Create Account"} 
[1m[35mUser Load (0.0ms)[0m SELECT `users`.* FROM `users` WHERE (`users`.`id` = 1) LIMIT 1 
[1m[36mUserType Load (0.0ms)[0m [1mSELECT `user_types`.* FROM `user_types` WHERE (`user_types`.`id` = 1) LIMIT 1[0m 
[paperclip] identify -format %wx%h "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" 2>NUL 
[paperclip] convert "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" -resize "100x" -crop "100x100+0+2" +repage "/usr/tmp/stream20101113-3624-s1ybvo20101113-3624-7z7f43" 2>NUL 
[paperclip] identify -format %wx%h "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" 2>NUL 
[paperclip] convert "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" -resize "150x150>" "/usr/tmp/stream20101113-3624-s1ybvo20101113-3624-124zkow" 2>NUL 
[paperclip] identify -format %wx%h "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" 2>NUL 
[paperclip] convert "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" -resize "300x300>" "/usr/tmp/stream20101113-3624-s1ybvo20101113-3624-1jd454b" 2>NUL 
[paperclip] identify -format %wx%h "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" 2>NUL 
[paperclip] convert "/usr/tmp/stream20101113-3624-s1ybvo.jpg[0]" -resize "400x400>" "/usr/tmp/stream20101113-3624-s1ybvo20101113-3624-w8mrk8" 2>NUL 
[1m[35mSQL (0.0ms)[0m BEGIN 
[1m[36mSQL (0.0ms)[0m [1mROLLBACK[0m Completed in 1547ms 

TypeError (can't convert Hash into Integer): 
app/controllers/accounts_controller.rb:247:in `create' 

Je devine que l'erreur vient de la forme, mais je ne peux pas comprendre où.

Toute aide serait grandement appréciée.


La chose la plus étrange est que cette forme a travaillé deux fois: Hier matin, juste après le démarrage de l'ordinateur, je lançais l'application, la forme et présenté cela a fonctionné. Plus tard, je n'ai pas réussi à le faire fonctionner à nouveau (et je n'ai rien changé)

Ce matin, j'ai démarré l'ordinateur et j'ai pu soumettre le formulaire (je n'ai pas essayé avec l'image à ce moment là) . Essayer encore et il a échoué. Redémarrer l'ordinateur était inutile. Ce que je fais maintenant enlève tout mais 1 champ du formulaire, et n'importe quel code du contrôleur excepté: @ compte.save, mais j'obtiens toujours la même erreur, en ignorant les validations dans mon modèle ...

J'ai également essayé avec un formulaire html directement codé en dur dans la vue (n'utilisant pas form_for ou form_tag) et j'obtenais le même résultat. Il est donc probable que le problème ne provient pas du contrôleur ou de la vue ... (et ce n'est pas non plus un problème de trombone)

+0

Une erreur se produit dans 'app/controllers/accounts_controller.rb: 247: dans' create''. Quelle ligne est-ce exactement (vous n'avez pas fournir les numéros de ligne)? –

+0

Désolé, dans def créer, la ligne 247 est "if @ account.save" –

Répondre

0

Problème résolu! Deux jours de combats avec un code qui n'a pas été en faute ... :(

L'erreur est venu d'une validation dans mon modèle!

validates_length_of :code, :is=>9, :message=>"has %d chars" 

Les seuls moments où il a travaillé comme était probablement en 9 caractères et la validation n'a pas eu à afficher le message% d ...

Questions connexes