2013-05-11 38 views
0

我試圖禁止用戶,但預計它不工作,可能是因爲我不知道我在做什麼禁止用戶功能:Rails的:定製的工作不

Routes: 

     resources :users do 
     collection do 
      post 'ban' 
     end 
     end 


class UsersController < ApplicationController 

    def ban 
    @user = User.find(params[:id]) 
    if current_user.admin? 
     @user.banned = true 
     @user.avatar = nil unless @user.avatar.nil? 
     @user.banned_by = current_user.full_name 
     @user.profile = nil unless @user.profile.nil? 
     @user.save 
     redirect_to current_user, notice: "User has been banned." 
    end 
    end 
end 

筆者認爲:

<%= link_to "Ban User", ban_users_path(:id => @user.id), :method=>:post %> 

由於某些原因,它通過參數「禁止」,並說無法找到用戶。

回答

1

你的路線應該是

resources :users do 
    member do 
    post 'ban' 
    end 
end 

會員路線行事的成員,所以你的要求看起來像POST /users/1/ban(用戶#1爲成員)。收集路線適用於整個收集,即POST /users/ban。你的幫手應該變成ban_user_path(@user)

另外我不認爲你需要檢查他們的頭像/配置文件是否爲零之後才能將它們設置爲零。只要將它們設置爲零,就沒有必要檢查。如果它們已經是零,那麼將它們設置爲零就沒有損害。

+0

天才........! – pratski 2013-05-11 16:46:15