簡體   English   中英

Rails接收HTTP POST請求

[英]Rails Receive HTTP POST Request

我有一個Rails應用,該應用從NGINX模塊接收POST請求。 該請求如下所示:

Parameters: {"name"=>"asdadsasdads", "type"=>"live"}

我想取這個名字,並在我的數據庫中檢查它的名稱是否相同,如果是,我想還給200,如果不是404。

def publish
  ssss = Ssss.find_by_name(params[:id])
  if ssss.name == params[:name]
    head 200, content_type: "text/html"
  else
    head 404, content_type: "text/html"
  end
end

這給了我一個500 Internal Server錯誤。

如果我刪除“ sssss.name”並創建一個“:name”(我只是在測試),它會給我一個404。如果我從else語句中刪除“ head 404,content_type:“ text / html”給我200,但每個請求都會通過,即使它與我的數據庫中的請求不同。

我什至不知道這應該如何工作,而且我在使用Google時遇到了麻煩。 有人能幫助我嗎? 什么是正確的?

謝謝!

更新1:

def publish
  ssss = Ssss.find_by_name(params[:name])
  if ssss == params[:name]
    head 200, content_type: "text/html"
  else
    head 404, content_type: "text/html"
  end
end

那就是我現在正在使用的。 它可以給我一個404,即使應該沒問題?!

"name"=>"55b5807bbde1", "type"=>"live"}
Ssss Load (0.1ms)  SELECT  "ssss".* FROM "ssss" WHERE "ssss"."name" = ? LIMIT 1  [["name", "55b5807bbde1"]]

如果我將其更改為find(params [:id]),它會給我500

在撰寫本文時,您似乎遇到的問題是,您正在將類Ssss的對象存儲在變量ssss ,然后將該對象與String進行比較。 這將返回false,因為對象不是同一類,從而使您陷入404塊。

嘗試將Ssss.nameparams[:name]進行比較,看看會得到什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM