2

我正在尝试使用 Rails 3.2 让 x-editable 工作(允许内联表单编辑)

当我通过 AJAX 从浏览器收到帖子时,我需要能够验证表单输入并发回响应。

如果成功,我只需要:

render :nothing => true

这工作正常。

如果不成功,根据他们的文档,我需要发回相当于这个 PHP 片段的内容:

header('HTTP 400 Bad Request', true, 400);
echo "This field is required!";

我无法弄清楚如何在 Rails 中做到这一点。

如果我尝试一个简单的渲染:status => 400,那么我的终端输出如下所示:

渲染文本模板 (0.0ms) 在 34ms 内完成 200 OK (Views: 1.3ms | ActiveRecord: 1.5ms)

而且我找不到有关如何将 400 错误与实际消息相结合的信息

我怎样才能做到这一点?

4

3 回答 3

3

尝试这个:

render text: "This field is required!", status: :bad_request
于 2013-06-11T21:45:49.963 回答
3

你追求的是:

head :no_content, :status => :bad_request

这表明您只生成 HTTP 标头

于 2013-06-11T22:14:46.860 回答
2

该 PHP 示例不包括“此字段是必需的!” 在响应中,它被打印出来。

您只需要使用带有 status code 的 HTTP 标头进行响应400 Bad Request,如下所示:

header('HTTP 400 Bad Request', true, 400);

在 Rails 中,您可以使用它:

head :bad_request
# or
head 400

或者这个,但对于读者来说,您只生成标题不太明确:

render nothing: true, status: :bad_request
# or
render nothing: true, status: 400

如果您确实想在响应中包含带有文本的正文(不仅仅是标题):

render text: "This field is required!", status: :bad_request
# or
render text: "This field is required!", status: 400
于 2014-11-05T14:39:43.897 回答