11

我如何不重定向到 html 格式,而是重定向到 json?

我想要这样的东西:

redirect_to user_path(@user), format: :json

但这不起作用,我仍然重定向到 html 路径。

4

2 回答 2

30

我又读了一些 apidock ......这很简单。我应该像这样在路径助手中指定格式:

redirect_to user_path(@user, format: :json)
于 2013-03-08T22:10:37.560 回答
2

在 Rails 5.2 API 应用程序中,接受的答案(format: :jsonredirect_to选项中指定)对我不起作用;带有Accept: application/json标头的请求。

使用redirect_to "/foo", format: :json导致这样的响应(为简洁而编辑):

HTTP/1.1 302 Found
Content-Type: text/html; charset=utf-8
Location: /foo

<html><body>You are being <a href="/foo">redirected</a>.</body></html>

这不适用于 API,所以redirect_to我完全没有使用,而是改用head

head :found, location: "/foo"

这会导致以下响应(再次为简洁起见进行了编辑)而没有正文,这正是我所寻找的:

HTTP/1.1 302 Found
Content-Type: application/json
Location: /foo

在我的情况下,我没有重定向到我的 Rails 应用程序中的页面,所以我没有使用 URL 帮助程序,但如果你这样做(例如user_pathredirect_to @user),你可以像这样为你的 URL 帮助程序提供相关选项:

head :found, location: user_path(user, format: :json)
# or
head :found, location: url_for(@user, format: :json)
于 2019-01-11T23:47:19.737 回答