我正在尝试在我的 _before_filter_ 中使用一个与 http 参数中的 aApplicationController
匹配的用户对象,例如:user_id
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
某种方式设置为。
这种行为的原因可能是什么?这是标准行为吗?如何避免/禁用它?
更新:
我总是将调用的参数传递user_id
给控制器。如果我exact same before filter
直接将它包含在 UsersController 中,它就可以工作!UsersController 中没有其他过滤器
更新 2:
用于用户控制器的路由
match ':user_id' => 'users#show'
用户控制器代码:
def show
if @user
render :text => "user not nil"
else
render :text => "user nil"
end
end
在 user_id 参数中传递的 id 肯定有一个用户,因为
谢谢你的帮助!