Zed*_*TuX 11 ruby ruby-on-rails ruby-on-rails-4
鉴于以下Rails 4.2控制器:
class Api::UsersController < ApplicationController
def index
respond_to do |format|
format.html do
flash[:error] = 'Access denied'
redirect_to root_url
end
format.json do
render json: {}, status: :unauthorised
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
当使用RSpec 3时,我尝试调用此index
操作并期望具有状态401,我总是具有状态200.
我获得401的唯一时刻是替换index
动作内容,head 401
但我想回答错误401,并建立一个"漂亮"的身体像{ error: 401, message: 'Unauthorised' }
.
为什么被status: :unauthorised
忽略了?
我不得不用以下代码替换我的控制器:
class Api::UsersController < ApplicationController
def index
respond_to do |format|
format.html do
flash[:error] = 'Access denied'
redirect_to root_url
end
format.json do
self.status = :unauthorized
self.response_body = { error: 'Access denied' }.to_json
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用render
不会阻止执行被调用的操作.使用head :unauthorized
返回正确的状态代码,但是空白.
随着它self.status
,self.response_body
它的工作完美.
你可以看看我的宝石源代码,我在这里有这个问题:https://github.com/YourCursus/fortress
归档时间: |
|
查看次数: |
15097 次 |
最近记录: |