Rails:如何为redirect_to设置json格式

时间:2013-03-08 22:00:39

标签: ruby-on-rails ruby json redirect routing

我怎样才能重定向到html格式而不是json?

我想要这样的东西:

redirect_to user_path(@user), format: :json

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

2 个答案:

答案 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_pathredirect_to @user),可以像这样向您的URL助手提供相关选项:

head :found, location: user_path(user, format: :json)
# or
head :found, location: url_for(@user, format: :json)