Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4-向用户模型方法发送设计参数_Ruby On Rails_Devise_Params_Nomethoderror - Fatal编程技术网

Ruby on rails Rails 4-向用户模型方法发送设计参数

Ruby on rails Rails 4-向用户模型方法发送设计参数,ruby-on-rails,devise,params,nomethoderror,Ruby On Rails,Devise,Params,Nomethoderror,我有自己的RegistrationController,它继承自Deave。在更新中,我想向我的用户方法发送参数,如下所示: def update params = resource.delete_invoice(params) if resource.check_invoice(params[:user]) if params[:user][:name].blank? flash[:alert] = t 'devise.registrations.wrong_user_

我有自己的RegistrationController,它继承自Deave。在更新中,我想向我的用户方法发送参数,如下所示:

def update
   params = resource.delete_invoice(params) if resource.check_invoice(params[:user])
   if params[:user][:name].blank?
      flash[:alert] = t 'devise.registrations.wrong_user_name'
      redirect_to action: 'edit' and return
  end
  super
end
不幸的是,我得到了一个错误:

NoMethodError in Users::RegistrationsController#update, undefined method `[]' for nil:NilClass 
这很奇怪,因为我通常可以写puts参数,而且它不是空的。如何解决此问题?

尝试以下方法:

unless params[:user].blank?
  if params[:user][:name].blank?
    #do your stuff
  end
end

这里的错误是,它试图在nil对象上调用[],因为params或flash不太可能是nil,您调用[]的唯一其他位置是params[:user],这表明这是nil

两个选项,检查params[:user]是否为nil或使用try:

if params[:user].nil? or params[:user][:name].blank?
      flash[:alert] = t 'devise.registrations.wrong_user_name'
      redirect_to action: 'edit' and return
end  
或者:

if params[:user].try(:fetch, :name).try(:blank?)
      flash[:alert] = t 'devise.registrations.wrong_user_name'
      redirect_to action: 'edit' and return
end

我认为这更整洁。NB try是一种rails方法,而不是ruby。

您确定资源是在运行update时生成的吗?在Rails 4中,build_资源是在该方法内部构建的。您可能想使用资源类?

U不理解我的意思。我试图调用checkinvoice时,第一行出错。