2012-05-10 12 views
15

Sto tentando di aggiungere un campo Caricamento Avatar alla mia Pagina profilo, ma non appena aggiungo il :html => {:multipart => true} ad esso, viene emesso un errore di sintassi.Form_for con: multipart => true sputa fuori

<%= 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'errore è:

syntax error, unexpected tASSOC, expecting keyword_end 
...end= form_for(@user), :html => { :multipart => true } do |f... 
...        ^

risposta

26

http://guides.rubyonrails.org/form_helpers.html#uploading-files

E 'sia un aiutante form_tag con multipart => true o semplicemente form_for

<%= form_tag({:action => :upload}, :multipart => true) do %> 
    <%= file_field_tag 'picture' %> 
<% end %> 

<%= form_for @person do |f| %> 
    <%= f.file_field :picture %> 
<% end %> 
34

Dovrebbe essere come questo:

form_for @user, :html => { :multipart => true } do |f| 

La parentesi in form_for(@user) indica effettivamente all'interprete Ruby che la funzione viene richiamata con un solo parametro e non è possibile passare il numero errato di argomenti in un metodo in Ruby.

1

Suppongo che tu stia utilizzando "paperclip" o "carrierwave" per caricare le immagini. Quindi, prova questo:

<%= form_for @user, : url => users_path, :html => {:multipart => true} do |f| %> 
Problemi correlati