我如何不重定向到 html 格式,而是重定向到 json?
我想要这样的东西:
redirect_to user_path(@user), format: :json
但这不起作用,我仍然重定向到 html 路径。
我如何不重定向到 html 格式,而是重定向到 json?
我想要这样的东西:
redirect_to user_path(@user), format: :json
但这不起作用,我仍然重定向到 html 路径。
我又读了一些 apidock ......这很简单。我应该像这样在路径助手中指定格式:
redirect_to user_path(@user, format: :json)
在 Rails 5.2 API 应用程序中,接受的答案(format: :json
在redirect_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_path
或redirect_to @user
),你可以像这样为你的 URL 帮助程序提供相关选项:
head :found, location: user_path(user, format: :json)
# or
head :found, location: url_for(@user, format: :json)