我正在为我的Rails 3.1应用程序开发基于JSON的API。我想提供一个自定义的错误响应,而不是默认的响应:
{"error":"You need to sign in or sign up before continuing."}
我的API控制器包含一个before_filter调用 authenticate_user!
,这就是渲染这个JSON响应的原因。
在搜索过程中,我发现了这个StackOverflow问题,它引用了这篇Devise维基页面。不幸的是,这篇维基页面对我来说不够详细,我不知道它告诉我该怎么做。具体来说,我不知道我应该把那段代码放在哪里,这样Devise/Warden就知道要呈现我想要的东西了。
从其他SA问题的评论中可以看出,由于我使用的Devise版本高于1.2(具体为1.4.2),因此似乎不需要调用custom_failure!
。然而,这篇维基页面并没有解释render
调用应该放在哪里,以便authenticate_user!
知道使用它而不是自己的渲染调用。
这个render
调用放在哪里?
编辑:我不仅想改变消息本身(就像设备en.yml
配置那样);我想改变响应的实际格式。具体来说,我想返回这个:
render :text => "You must be logged in to do that.", :status => :unauthorized
format.json { render :json => { "status" => ERROR_NOT_REGISTERED }, :status => :unauthorized }
。 - Mateusz