2017-03-02 197 views
1

我的应用程序有一个搜索页面,其结果可以(显然)有时为零。当页面返回结果时,我想使用HTTP 200,当没有结果时,我希望页面返回HTTP 204.Rails HTTP 204没有呈现模板

此过程对初始加载起作用,这是一个同步调用 - 如果存在没有结果,页面呈现正常,说没有结果,HTTP状态为204.

但是,如果我执行的搜索通过HTML返回结果,然后使用我的搜索过滤器来获取已知的空结果设置,AJAX调用触发,命中控制器,我看到日志返回一个HTTP 204,但相应的JS模板(它重新呈现页面)从不加载(例如,我继续看到一个微调器,该工作正在完成)。

如果HTTP状态码是204,是否有某些东西阻止Rails渲染AJAX模板?

注意:该应用程序工作正常,没有结果,并没有使用status: :no_content指令。但是没有结果的200 HTTP状态对我来说似乎不正确。

编辑 - 相应的代码

后过滤我的结果,我分页他们(使用will_paginate)。我的控制器方法的最后一行是:

render :index, status: @results.total_entries.zero? ? :no_content : :ok 
+0

您需要在此处添加一些代码,以说明如何分配204代码以及可能无法使用的代码。 – tadman

+0

@tadman - 杜,谢谢。完成。 – CDub

+0

你是否在你的'log/development.log'中看到204,或者它在那里是错误的代码? – tadman

回答

0

在轨5,你需要的情况下,手动指定响应格式为HTTP 204: No content

更多解释,你可以找到here

+0

我使用的是Rails 4.2.7.1,而不是Rails 5。 – CDub