406访问Rails上的JSON时出现不可接受的错误

406访问Rails上的JSON时出现不可接受的错误,json,ruby-on-rails-3.1,authlogic,Json,Ruby On Rails 3.1,Authlogic,我想在我的Rails 3.1.3应用程序中通过HTML或JSON显示用户UsersControllerindex的列表 如果未登录,HTML请求应重定向到登录页面,JSON请求应返回未经授权的标题。HTML请求工作正常。未登录时,mysite.com/users会重定向到登录页面,登录时,mysite.com/users.json会完美地呈现为json 未登录时,无论是通过浏览器检查还是通过将内容类型设置为“application/json”,尝试访问users.json时都会出现406错误 为

我想在我的Rails 3.1.3应用程序中通过HTML或JSON显示用户UsersControllerindex的列表

如果未登录,HTML请求应重定向到登录页面,JSON请求应返回未经授权的标题。HTML请求工作正常。未登录时,mysite.com/users会重定向到登录页面,登录时,mysite.com/users.json会完美地呈现为json

未登录时,无论是通过浏览器检查还是通过将内容类型设置为“application/json”,尝试访问users.json时都会出现406错误

为了检查用户是否登录,我使用before\u过滤器和authlogic进行身份验证。问题是,如果我删除before_过滤器,JSON请求就可以完美地工作。这让我觉得问题出在我的前过滤器链上:

用户控制器:

before_filter :login_required, :only => [:index]
AuthenticatedSystem helper模块:

def login_required
  logged_in? ? true : access_denied
end

def logged_in?
  current_user ? true : false #current_user does some authlogic authentication stuff
end

def access_denied
  respond_to do |accepts|
    accepts.html do
      store_location
      redirect_to login_path and return false
    end
    accepts.json do 
      render :json => {}, :status => :unauthorized
    end
  end
  false
end
以下是用于呈现JSON的索引方法供参考:

def index
    @users = @users.active.recent.includes(:tags).page(params[:page]).per(20)

    respond_to do |format|
      format.html { get_additional_homepage_data }
      format.json { render :json => @users }
    end
end
我已经尝试了在我的before_过滤器链中所能想到的一切来调试它,但我想不出来。有什么想法吗

使用: 轨道3.1.3
authlogic 3.1.0

这一问题是否得到解决?如果是这样,请发布你的解决方案。不,我从未找到解决方案。代码中的一次重大重构帮助我克服了这一障碍,但从那时起的经验来看,我意识到以下启发几乎总是正确的:406不可接受错误通常意味着您试图请求不受支持的格式。因此,检查您正在调用的URL是否忘记了结尾处的.json?,检查处理请求的控制器是否忘记处理format.json{…}?,并检查条件流是否将其引导到不处理该格式的地方。