嗨有以下设置
我有一个登录系统供客户登录系统。他们可以在系统上编辑他们的详细信息。我需要阻止他们编辑其他客户的详细信息。这可以通过更改 URL 中的 ID 来实现。
有一个命名空间,它被称为“配置文件”
我以前对系统上的用户进行过此操作,CanCan 是否仅支持 current_user 或者我可以将其更改为 current_client。当我在以下日志文件中收到错误时:
NameError(未定义的局部变量或方法 `current_user' for #):
代码如下:
应用控制器
protect_from_forgery
helper_method :current_client
rescue_from CanCan::AccessDenied do |exception|
redirect_to profile_url
end
private
def current_client
@current_client ||= Client.find(session[:client_id]) if session[:client_id]
end
def logged_in?
unless session[:client_id]
flash[:notice] = "You need to log in first."
redirect_to login_path
return false
else
return true
end
end
配置文件/clients_controller
before_filter :logged_in?
load_and_authorize_resource
# GET /clients/1/edit
def edit
@client = Client.find(params[:id])
end
# PUT /clients/1
# PUT /clients/1.json
def update
@client = Client.find(params[:id])
respond_to do |format|
if @client.update_attributes(params[:client])
format.html { redirect_to [:profile,@client], :notice => 'Client was successfully updated.' }
format.json { head :ok }
else
format.html { render :action => "edit" }
format.json { render :json => @client.errors, :status => :unprocessable_entity }
end
end
end
知道为什么会出现此错误。