加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 = […],你应该是好的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读