我試圖用一個_before_filter_在我ApplicationController
獲取用戶對象的HTTP參數匹配user_id
像以前那樣抓取應用程序控制器對象:的Rails 3.2過濾
before_filter :fetch_user
def fetch_user
if params[:user_id].present?
@user = User.find(params[:user_id])
end
rescue ActiveRecord::RecordNotFound
# user not found
end
這在所有的工作對我來說控制器,它從ApplicationController
繼承,除了名爲UsersController的控制器其中@user
似乎以某種方式設置爲nil
。
這種行爲的原因是什麼?這是標準行爲嗎?如何避免/禁用它?
UPDATE:
我總是通過一個叫user_id
控制器參數。 如果我將exact same before filter
直接包含到UsersController中,它正在工作!
路線這是使用用戶控制器
match ':user_id' => 'users#show'
用戶控制器代碼:
def show
if @user
render :text => "user not nil"
else
render :text => "user nil"
end
end
有 那裏之前在UsersController
UPDATE 2濾波器是沒有其他肯定是一個id爲id的用戶通過user_id參數,因爲
感謝您的幫助!
UsersController中有什麼?是否因爲通常在用戶控制器中,用戶ID通常是params [:id]而不是params [:user_id]? –
參數名稱始終爲user_id – alex
@alex:否,如果您在'UsersController'中,則參數是(或它應該是)'param [:id]'。 – tokland