2013-09-03 18 views
22

Verwenden Sie Rails 4, und versuchen, ein Dateifeld zu einem vorhandenen Formular hinzuzufügen, mithilfe von Simple_form und Büroklammer.Datei-Upload-Feld verursacht ActionController :: InvalidAuthenticityToken-Ausnahme

Hier ist der kritische Teil der Form:

<%= simple_form_for(@employee, html: { class: 'form-horizontal requires', multipart: true}, remote: true) do |f| %> 

    <%= f.input :avatar %> 

<% end %> 

Alles funktioniert ok, wenn ich das Formular mit einer hochgeladenen Datei tatsächlich einreichen. Dann bekomme ich folgendes:

ActionController::InvalidAuthenticityToken in EmployeesController#update 

Was mache ich hier falsch?

+2

Ich glaube, die Antwort ist [hier] [1] Sieht aus wie neu mit Schienen 4. [1]: http://stackoverflow.com/ questions/16258911/rails-4-authenticity-token –

Antwort

15

Die einfachste Lösung wäre einfach authenticity_token: true zu Ihrem Formular hinzuzufügen. So:

<%= form_for @employee, html: { class: 'form-horizontal requires'}, multipart: true, remote: true, authenticity_token: true do |f| %> 
    <%= f.input :avatar %> 
<% end %> 
+2

hinzufügen 'authenticity_token: true' funktioniert wie ein Charme :-) – Avishai

+0

gewarnt werden, dass' remote: true' Option ignoriert wird und das Formular als 'html' eingereicht wird. Wenn Sie das Formular als 'js' einreichen wollen, schauen Sie sich [William] (http://stackoverflow.com/a/21029501/1079609) an. – golfadas

20

Ich war mit dem gleichen Problem. <%= token_tag form_authenticity_token %> hat nicht für mich funktioniert.

Installieren gem remotipart löste mein Problem. remotipart

+5

Dies ist die tatsächliche Antwort, wenn Sie versuchen, eine Datei mit remote: true einzureichen und mit einer js.erb-Datei antworten möchten. Installieren Sie das Remotipart-Juwel (sehr schnell und einfach) und es funktioniert wie ein Zauber. – DerProgrammer

Verwandte Themen