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)
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)? –
Désolé, dans def créer, la ligne 247 est "if @ account.save" –