1
我在我的Rails 5應用程序中有一個搜索控制器,如果搜索項是空白的,我希望它返回一個400狀態的頭部,但是否則搜索並呈現結果頁面。如何從控制器操作返回一個頭而不呈現其默認視圖?
這裏是我的控制器......
def new
search_term = search_params[:search].downcase
head 400 and return if search_term.blank?
@search_results = Post.where("lower(title) LIKE ? OR link LIKE ?",
"%#{search_term}%",
"%#{search_term}%").
order("created_at DESC").
paginate(page: params[:page], per_page: 30)
if @search_results.empty?
flash.now[:information] = "No results found"
end
end
private
def search_params
params.require(:search).permit(:search)
end
我試圖調整,如果和返回語法,但似乎沒有任何工作。當我從視圖中單擊搜索按鈕而沒有搜索字符串時,它只會呈現控制器路徑下的空白頁面。我希望它只停留在同一頁面上,什麼也不做。
第一個示例沒有解決問題,它仍然在搜索路徑下呈現空白頁。使用第二種解決方案時,絕不會觸發異常,並且所有記錄都會返回到頁面上。一定有辦法! –
'它仍然在搜索路徑下呈現一個空白頁面 - 這看起來像是一個發送400頭部空白主體的完美例子 – Esse
我在其他地方看過瀏覽器假設2型和4型響應代碼將帶有一個新頁面來呈現。我嘗試過使用303等,但沒有運氣。我用'render:back'得到了我想要的東西,但是ux有點兒不舒服。想想我會建立一些Jquery並讓Ajax處理它。 –