Undefined method 'map' for nil:NilClass
Mon app semble être jeter au hasard d'un "undefined method `map' for nil:NilClass" erreur lorsque vous essayez de mettre à jour leur profil.
Mais ce qui est bizarre c'est que c'est en disant que l'erreur se produit sur la mise à jour, mais l'erreur est en fait dans une vue.
D'erreur complet:
users#update (ActionView::TemplateError) "undefined method `map' for nil:NilClass"
On line #52 of app/views/users/edit.html.erb
Line 52: <%= options_from_collection_for_select(@networks_domestic, 'id', 'name', @user.network_id) %>
Et voici les paramètres à partir d'une nouvelle erreur:
{"user"=>{"email_notify"=>"[email protected]", "network_id"=>"",
"password_confirmation"=>"[FILTERED]", "mobile"=>"", "password"=>"[FILTERED]",
"email"=>"[email protected]"}, "action"=>"update", "_method"=>"put", "id"=>"5089",
"controller"=>"users"}
Honnêtement pas sûr où commencer à chercher. J'ai eu l'utilisateur-dire qu'il peut mettre à jour les mêmes informations à partir de IE mais pas à partir de Firefox. Et quand j'utilise la même info, je suis en mesure de mettre à jour sans problème. Donc, je suis perplexe.
OriginalL'auteur Shpigford | 2009-11-12
Vous devez vous connecter pour publier un commentaire.
Meilleure supposition...
Votre fonction éditer correctement définit
@networks_domestic
donc tout est parfait jusqu'à ce que vous rencontrez une erreur dans la fonction de mise à jour et de les appelerrender :action => "edit"
.Rendu n'appelle pas la fonction d'édition, mais rend la vue d'édition. Ainsi, dans le cas de l'échec d'une mise à jour, vous devez définir
@networks_domestic
avant de retourner à partir de la mise à jour.Disons, par exemple, vous avez les éléments suivants:
Vous recevrez le message d'erreur que vous décrivez, car
@networkd_domestic
n'est pas défini dans la condition d'erreur dans la fonction de mise à jour.Ajouter
@networkd_domestic = [...]
avant l'édition de rendu et vous devriez être bon.3 ans plus tard... et encore m'a sauvé beaucoup de temps précieux :). Merci
C'est précisément la question que j'ai est venu à travers. Merci! Est-il une approche set @networkd_domestic dans un seul endroit au lieu de modifier et de mettre à jour?
Définir une méthode et utiliser un before_filter rappel faisant référence à cette méthode.
OriginalL'auteur Tony Fontenot
Est
@networks_domentic
configuré correctement dans le contrôleur? Ajouter<%= @networks_domestic.inspect %>
juste avant la ligne 52 et voir ce que vous obtenez. Vérifier@networkd_domestic.nil?
dans le contrôleur et assurez-vous de ne pas envoyer denil
à la vue.EDIT:
Si vous regardez le code source pour
options_from_collection_for_select
vous verrez que c'est l'appel demap
sur la collection que vous passez (@networks_domestic dans ce cas).OriginalL'auteur Jerry Fernholz