lundi 10 août 2015

ActiveRecord::RecordNotFound in UsersController#deactivate (Couldn't find User with 'id'=)

With my rails app I can successfully destroy, sign up and log in users but I can seem to deactivate them. I get this error every time: ActiveRecord::RecordNotFound in UsersController#deactivate (Couldn't find User with 'id'=)

record = s.execute([id], self, connection).first
    unless record
      raise RecordNotFound, "Couldn't find #{name} with '#{primary_key}'=#{id}"
    end
    record
  rescue RangeError

Here's the User controller:

def deactivate
 user = User.find(params[:user_id])
  if current_user.admin?
  user.deactivate_account!
  redirect_to users_path 
  else
   redirect_to :back
 end

end

The _user.html.erb view:

<li><%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
<%= link_to "delete", user, method: :delete,
                              data: { confirm: "You sure?" } %>
<% end %>

<% if current_user.admin? && @user != current_user %>
<%=link_to "deactivate", deactivate_path(user_id: @user), method: :post, 
                                         data: { confirm: "Are you sure?"}%> 
<% end %>
</li>

and the routes:

get 'password_resets/new'
get 'password_resets/edit'
root             'static_pages#home'
get 'help'    => 'static_pages#help'
get 'about'   => 'static_pages#about'
get 'contact' => 'static_pages#contact'
get 'signup'  => 'users#new'
get    'login'   => 'sessions#new'
post   'login'   => 'sessions#create'
delete 'logout'  => 'sessions#destroy'
resources :users
resources :account_activations, only: [:edit]
resources :password_resets,     only: [:new, :create, :edit, :update]
post '/deactivate', to: "users#deactivate"`

What could be wrong? I'm assuming error is in the controller. I am following Michael Hartl tutorial, as I'm a beginner, but I'm also trying to implement thing by myself (like this one).

Aucun commentaire:

Enregistrer un commentaire