2016-04-25 20 views
-1

Ich habe einen separaten Link getan Passwort von devise zu ändern, aber ich bin immer einen Fehler von:NoMethodError in Userscontroller # update

NoMethodError in Userscontroller # update nicht definierte Methode `update‘ für nil: NilClass

Kann mir bitte jemand helfen!

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 

Meine edit.html.erb Datei in Benutzer

<%= 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> 

Mein Fehler ist:

NoMethodError in Userscontroller # update nicht definierte Methode `Update 'Für nil: NilClass

Antwort

1

Sie müssen die Benutzervariable in der Update-Aktion setzen

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 
Verwandte Themen