无法通过参数中的电子邮件地址找到用户。没有参数工作

Can't find user by email address from params. Works without params

所以我有一个基本的控制器,我想在其中找到一个用户和 return json。

这个很好用

User.find_by(email: "foo@bar.com") => #<User>

这不起作用

User.find_by(email: params[:email]) => nil

路线是这样设置的

get 'foo/:email' => 'foo#bar'

当我记录参数的值时,我可以清楚地看到电子邮件已分配并具有值。

我还为我的用户身份验证安装了设计,所以我不确定这是否与它有关。

非常感谢您的帮助,我想不通。

编辑 1

刚刚弄明白了。我的路由参数 /:email 刚刚通过它时位于 route/foo@bar.com 参数只接收 "foo@bar" 而不是 .com

改用 ?email= 解决了这个问题。

不要在您的路线中发送电子邮件。相反,您可以发送 id。因为查询字符串不支持特殊字符。

如果您没有任何其他选项来发送 ID,请使用您的电子邮件创建一个 base64 字符串并将其发送到查询字符串中。