2013-09-03 8 views
22

Korzystanie z szyn 4 i próba dodania pola pliku do istniejącego formularza za pomocą simple_form i spinacza.Pole przesyłania pliku powodujące działanie ActionController :: InvalidAuthenticityToken wyjątek

Oto krytyczna część formularza:

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

    <%= f.input :avatar %> 

<% end %> 

Wszystko działa ok, chyba że faktycznie przesłać formularz z przesłanego pliku. Następnie otrzymuję:

ActionController::InvalidAuthenticityToken in EmployeesController#update 

Co ja tu robię źle?

+2

Wierzę odpowiedź jest [tutaj] [1] Wygląda jak nowy z szyn 4. [1]: http://stackoverflow.com/ questions/16258911/rails-4-authenticity-token –

Odpowiedz

15

Najprostszym rozwiązaniem byłoby dodanie do formularza formularza authenticity_token: true. Jak to:

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

dodanie 'authenticity_token: true' działało jak czar :-) – Avishai

+0

ostrzegamy, że opcja' remote: true' zostanie zignorowana, a formularz zostanie przesłany jako 'html'. Jeśli chcesz przesłać formularz jako 'js' spójrz na odpowiedź [William] (http://stackoverflow.com/a/21029501/1079609). – golfadas

20

Byłem z tym samym problemem. <%= token_tag form_authenticity_token %> nie działa dla mnie.

Zainstaluj gem remotipart rozwiązany mój problem. remotipart

+5

To jest rzeczywista odpowiedź, jeśli próbujesz przesłać plik za pomocą remote: true i chcesz odpowiedzieć, używając pliku js.erb. Zainstaluj klejnot remotipart (bardzo szybki i łatwy) i działa jak urok. – DerProgrammer

Powiązane problemy