我有一个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.如果我删除“头404,content_type:”text / html“ else语句它给了我200,但是每个请求都会通过,即使它与我的数据库中的不一样。
我不明白这是如何工作的,我很难用谷歌搜索。有谁可以帮助我吗?什么是正确的?
谢谢!
更新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"]]
如果我将其改为查找(params [:id]),它会给我一个500
答案 0 :(得分:0)
在撰写本文时,您的问题似乎是您在变量Ssss
中存储了类ssss
的对象,然后将此对象与String
进行比较。这将返回false,因为对象不属于同一类,将您引入404块。
尝试将Ssss.name
与params[:name]
进行比较,看看你得到了什么。