我怎样才能重定向到html格式而不是json?
我想要这样的东西:
redirect_to user_path(@user), format: :json
但这不起作用,我仍然重定向到html路径。
答案 0 :(得分:27)
我读了一些apidock ......这很简单。我应该在路径助手中指定格式,如下所示:
redirect_to user_path(@user, format: :json)
答案 1 :(得分:0)
已接受的答案(在format: :json
选项中指定redirect_to
)在Rails 5.2 API应用程序中不适用于我;带有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)