2016-04-25 55 views
-1

我做了一個單獨的鏈接從色器件更改密碼,但我得到的錯誤:在UsersController#更新未定義的方法'更新」NoMethodError在UsersController#更新

NoMethodError爲 零:NilClass

有人可以幫助我!

users_controller.rb

class UsersController < ApplicationController 
    def show 
     @user = User.find(params[:id]) 
    end 

    def edit 
     @user = User.find(params[:id]) 
    end 

    def update 
     if @user.update(user_params) 
     redirect_to @user, notice: 'User was successfully updated.' 
     else 
     render :edit 
     end 
    end 

    private 
     def user_params 
     params.require(:user).permit(:password, :password_confirmation) 
     end 


end 

edit.html.erb文件中的用戶

<%= form_for(@user) do |f| %> 

<div class="row"> 
    <label class="col-xs-4" for="password">New Password</label> 
    <div class="col-xs-8"> 
    <%= f.password_field :password, autocomplete: "off", :placeholder => "New Password (leave blank if you don't want to change it)", :class => 'form-control' %> 
    </div> 
</div></br></br> 
<div class="row"> 
    <label class="col-xs-4" for="password">Confirm Password</label> 
    <div class="col-xs-8"> 
    <%= f.password_field :password_confirmation, autocomplete: "off", :placeholder => "Enter password to confirm changes", :class => 'form-control' %> 
    </div> 
</div></br></br> 
    <div class="field"> 
    <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br /> 
    <%= f.password_field :current_password %> 
    </div></br></br> 
    <div class="actions"> 
    <%= f.submit "Save", :class => "btn btn-primary" %> 
    </div> 
<% end %> 
</div></div> 

我的錯誤是:

NoMethodError在UsersController#更新未定義的方法`更新「對於 零:NilClass

回答

1

您需要設置用戶變量的更新動作

def edit 
    @user = User.find(params[:id]) 
end 

def update 
    @user = User.find(params[:id]) 
    if @user.update(user_params) 
    redirect_to @user, notice: 'User was successfully updated.' 
    else 
    render :edit 
    end 
end