Ruby on rails Rails接收HTTP POST请求

Ruby on rails Rails接收HTTP POST请求,ruby-on-rails,ruby,http,Ruby On Rails,Ruby,Http,我有一个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, cont

我有一个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内部服务器错误

如果我删除ssss.name并生成一个:name,我刚刚测试过,它会给我一个404。如果我从else语句中删除头404,content_type:text/html,它会给我200,但是每个请求都会通过,即使它与我的DB中的请求不同

我甚至不明白这是怎么回事,我很难用谷歌搜索。有人能帮我吗?什么是正确的

谢谢

更新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"]]

如果我将其更改为findparams[:id],它会给我一个500

,那么在撰写本文时,您的问题似乎是您正在将Ssss类的对象存储在变量Ssss中,然后将该对象与字符串进行比较。这将返回false,因为对象不属于同一类,从而将您推入404块


尝试将Ssss.name与params[:name]进行比较,看看结果如何。

您正在使用find_by_name,但提供了params[:id]。也许那是一个很好的开始。使用id搜索。查找或。通过id查找。哦,天哪,我太笨了。。。是的,至少我没有得到500的错误。现在是404,即使名称匹配:name=>55b5807bbde1,type=>live}Ssss加载0.1ms从Ssss中选择Ssss.*其中Ssss.name=?限制1[[名称,55B5807BDE1]]已完成404未在1ms ActiveRecord中找到:0.1ms。。。。。。。。你知道吗?你现在怎么称呼find_by_name?find_by_nameparams[:name],然后我只使用stream==,如果我使用ID,我也会得到500。使用此解决方案,我得到了一个404。感谢您的帮助,但我也得到了404:name=>55b5807bbde1,type=>live}Ssss加载0.1ms从Ssss中选择Ssss.*其中Ssss.name=?限制1[[name,55b5807bbde1]]渲染文本模板0.0ms已完成404在12ms视图中找不到:2.5ms | ActiveRecord:0.6ms此条件的代码是什么样子的?那么ssss.name的类是什么?