Io uso Devise (2.2.3) e sto cercando di caricare il modulo di "modifica" per un utente che utilizza questo Ajax chiamata jQuery:Rails 3.2.13/Devise 2.2.3: Metodo "authenticate_scope!" getta errore: numero errato di argomenti (1 per 0)
$.ajax({
type: 'GET',
url: '/users/edit',
data: {
id: id
}
});
Questa volontà chiamare questo before_filter ...
prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]
... dal file gem ...
devise/app/controllers/devise/registrations_controller.rb
(see: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb)
il metodo che è poi chiamato a dire:
# 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
E l'errore che ottengo è:
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
```
Ma quando elimino il ": forza => true", allora l'errore svanisce:
# 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
Quindi mi chiedo cosa significa ": force => true" ... Perché ottengo l'errore quando lo lascio sul posto? Suppongo che sia una cattiva idea codificare la gemma delle scimmie in questo modo. Ma cos'altro posso fare per evitare l'errore?
Grazie per il vostro aiuto!
mi sa che devo dire ora: Grazie, @TomDogg, sei davvero intelligente :-) – TomDogg
Dopo due ore non capisco nulla (ma scavando nel profondo nella progettazione), grazie! Abbiamo avuto lo stesso identico problema. Ti meriti tutti gli uppoints dalla domanda, attraverso la risposta al commento! :) –
Ho appena avuto lo stesso problema, grazie! – ABrowne