2017-03-02 193 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