当前位置:  开发笔记 > 编程语言 > 正文

Ruby on Rails更新当前用户

如何解决《RubyonRails更新当前用户》经验,为你挑选了1个好方法。

如何更新当前用户信息,我已尝试但显示此错误:

分配属性时,必须将哈希作为参数传递.

这是我的控制器代码:

 def edit
    @user = current_user
  end

 def update
    @user= current_user
   if @user.update_attributes(params[:current_user])
    # Handle a successful update.
  else
    render 'edit'
  end
end

我的溃败:

get 'edit' => 'users#edit'
post  'edit'   => 'users#update'

PARAMS:

private

def user_params
  params.require(:users).permit(:first_name, :last_name, :email)
end

我的模特:

class User < ActiveRecord::Base
before_save { email.downcase! }

validates :first_name, :presence => true, :length => { :in => 3..20 }
validates :last_name, :presence => true, :length => { :in => 3..20 }
validates :email, :presence => true, :uniqueness => true, format: { with: /\A[^@\s]+@([^@.\s]+\.)+[^@.\s]+\z/ }

has_secure_password
validates :password, presence: true, length: { minimum: 6 }
end

形成:

<%= form_for :user, url: my_account_path(@user), action: :update, method: :post  do |f| %>
    <%= f.text_field :first_name %>
    <%= f.text_field :last_name %>
    <%= f.text_field :email %>
    <%= f.submit "Update Account" %>
<% end %>

请帮助我很多.

谢谢



1> spickermann..:

您无法更新您的用户有两个原因:首先,您的表单将params嵌套在名为user(而不是current_user)的键下的数据发布:

@user.update_attributes(params[:user])

其次,在您的模型中,您验证密码的存在,但您的表单不提供密码.看看文档has_secure_password.没有必要进行额外的验证.因此,只需删除该行:

validates :password, presence: true, length: { minimum: 6 }

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有