ruby-on-rails – 未定义的方法’map’for nil:NilClass
发布时间:2020-12-16 22:05:53 所属栏目:百科 来源:网络整理
导读:当用户尝试更新其配置文件时,我的应用程序似乎随机地抛出“nil:NilClass”错误的“undefined方法”映射. 但是奇怪的是这是说错误发生在更新,但错误行实际上在一个视图中. 全错误: users#update (ActionView::TemplateError) "undefined method `map' for n
当用户尝试更新其配置文件时,我的应用程序似乎随机地抛出“nil:NilClass”错误的“undefined方法”映射.
但是奇怪的是这是说错误发生在更新,但错误行实际上在一个视图中. 全错误: 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) %> 这里是最近一个错误的参数: {"user"=>{"email_notify"=>"email@example.com","network_id"=>"","password_confirmation"=>"[FILTERED]","mobile"=>"","password"=>"[FILTERED]","email"=>"email@example.com"},"action"=>"update","_method"=>"put","id"=>"5089","controller"=>"users"} 老实说不清楚哪里甚至开始寻找.我有一个用户说他可以从IE更新相同的信息,但不能从Firefox更新.当我使用他们相同的信息时,我可以更新没有问题.所以,我被困了 解决方法
最佳的揣测…
您的编辑功能正确地定义了@networks_domestic,所以一切都很棒,直到在update函数中遇到错误并调用render:action => “编辑”. 渲染不调用编辑功能,而只是渲染编辑视图.因此,在更新失败的情况下,您必须在从更新返回之前定义@networks_domestic. 所以说,例如,你有以下几点: def edit @user = User.find(params[:id]) @networkd_domestic = [...] end def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(params[:user]) flash[:notice] = "User was successfully updated." format.html { redirect_to(admin_users_url) } else format.html { render :action => "edit" } end end end 你会得到你所描述的错误,因为在更新功能的错误条件中没有定义@networkd_domestic. 在编辑渲染之前添加@networkd_domestic = […],你应该是好的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |