0

嗨有以下设置

我有一个登录系统供客户登录系统。他们可以在系统上编辑他们的详细信息。我需要阻止他们编辑其他客户的详细信息。这可以通过更改 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

知道为什么会出现此错误。

4

1 回答 1

0

使用了以下内容:

  helper_method :current_user

  rescue_from CanCan::AccessDenied do |exception|
    redirect_to profile_url
  end

  private

  def current_user
    @current_user ||= Client.find(session[:client_id]) if session[:client_id]
  end
于 2012-10-18T09:16:28.750 回答