używam opracować (2.2.3) i staram się załadować „edytuj” formularz dla użytkownika za pomocą tego jQuery ajax połączenia:Rails 3.2.13/Devise 2.2.3: Metoda "authenticate_scope!" wyrzuca błąd: nieprawidłowa liczba argumentów (1 0)
$.ajax({
type: 'GET',
url: '/users/edit',
data: {
id: id
}
});
Będzie nazywamy to before_filter ...
prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]
... z pliku gem ...
devise/app/controllers/devise/registrations_controller.rb
(see: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb)
Sposób, który jest w końcu nazywa się:
# Authenticates the current scope and gets the current resource from the session.
def authenticate_scope!
send(:"authenticate_#{resource_name}!"), :force => true)
self.resource = send(:"current_#{resource_name}")
end
a błąd pojawia się:
ArgumentError at /users/edit
============================
> wrong number of arguments (1 for 0)
(gem) devise-2.2.3/app/controllers/devise/registrations_controller.rb, line 116
-------------------------------------------------------------------------------
``` ruby
111 signed_in_root_path(resource)
112 end
113
114 # Authenticates the current scope and gets the current resource from the session.
115 def authenticate_scope!
> 116 send(:"authenticate_#{resource_name}!", :force => true)
117 self.resource = send(:"current_#{resource_name}")
118 end
119 end
```
Ale kiedy usunąć ": siła => true", a następnie błąd znika:
# Authenticates the current scope and gets the current resource from the session.
def authenticate_scope!
send(:"authenticate_#{resource_name}!")) # deleted: :force => true
self.resource = send(:"current_#{resource_name}")
end
Więc zastanawiam co ": force => true" oznacza ... Dlaczego pojawia się błąd, gdy zostawiam go w miejscu? Przypuszczam, że złym pomysłem jest łatanie kodu gem w ten sposób. Ale co jeszcze mogę zrobić, aby uniknąć błędu?
Dzięki za pomoc!
Chyba muszę powiedzieć teraz: Dzięki, @TomDogg, jesteś naprawdę mądry :-) – TomDogg
Po dwóch godzinach nie rozumiejąc niczego (ale pogrążając się w zgłębianiu), dzięki! Mieliśmy dokładnie ten sam problem. Zasługujesz na wszystkie punkty uprzywilejowania od pytania, poprzez odpowiedź na komentarz! :) –
Po prostu miałem ten sam problem, dzięki! – ABrowne