Rails, Ruby не показывает статус «Неавторизованный» — проблема с синтаксисом

При попытке запросить JSON из ресурса, не принадлежащего пользователю, несмотря на проверку, которую я написал ниже, JSON отображается как пустые скобки, но статус возвращается как 200 OK. Что мне нужно изменить, чтобы отвечать со статусом 401:

    @requested_resource = params[:resource_id].to_i
    @users_resources = Resource.owned_by(@current_user.id).collect {|s| s.id}
    if @users_resources.include?(@requested_resource)

    else
      respond_to do |format|
        format.json { render :json => [], :status => :unauthorized }
        format.html { render :file => "public/401.html", :status => :unauthorized }
      end
    end

Кроме того, я использую RABL...


person ac360    schedule 08.04.2013    source источник


Ответы (1)


Пусть RoR играет за вас, используйте redirect_to вместо respond_to. Например.:

redirect_to "public/401.html", :alert => "Please authorize", :status => :unauthorized
person Aleksei Matiushkin    schedule 08.04.2013
comment
Переключение на redirect_to приводит к статусу 304 Not Modified. - person ac360; 08.04.2013
comment
Хммм, с вашим новым ответом статус возвращается к 200 OK. Это должно быть либо утверждение IF, либо тот факт, что я использую RABL. - person ac360; 08.04.2013
comment
На самом деле RABL не должен доводить что-либо до перенаправления. Может быть, вам поможет это? - person Aleksei Matiushkin; 08.04.2013