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 次 |
| 最近记录: |