J'essaie d'ajouter un champ de téléchargement d'avatar à ma page de profil, mais dès que j'y ajoute le :html => {:multipart => true}
, une erreur de syntaxe est générée.
<%= form_for(@user), :html => { :multipart => true } do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.label :avatar %>
<%= f.file_field :avatar %>
<%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>
L'erreur est:
syntax error, unexpected tASSOC, expecting keyword_end
...end= form_for(@user), :html => { :multipart => true } do |f...
... ^
http://guides.rubyonrails.org/form_helpers.html#uploading-files
C'est soit un helper form_tag
avec multipart => true
ou juste form_for
<%= form_tag({:action => :upload}, :multipart => true) do %>
<%= file_field_tag 'picture' %>
<% end %>
<%= form_for @person do |f| %>
<%= f.file_field :picture %>
<% end %>
Cela devrait être comme ça:
form_for @user, :html => { :multipart => true } do |f|
La parenthèse dans form_for(@user)
indique en fait à l'interprète Ruby que la fonction est appelée avec un seul paramètre et que vous ne pouvez pas transmettre un nombre incorrect d'arguments dans une méthode dans Ruby.
Je suppose que vous utilisez "Paperclip" ou "carrierwave" pour télécharger des images. Alors, essayez ceci:
<%= form_for @user, : url => users_path, :html => {:multipart => true} do |f| %>