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

时间:2015-08-27 18:44:09

标签: ruby-on-rails ruby devise params

所以我有一个基本的控制器,我想找到一个用户并返回json。

这很好用

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

这不起作用

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

路线设置为

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

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

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

非常感谢帮助,我无法想出这一点。

修改1

刚想通了。我的路线params /:电子邮件,只是通过它是在route/foo@bar.com param只是拿起&#34; foo @ bar&#34;而不是.com

通过使用?email =来修正此问题。

1 个答案:

答案 0 :(得分:-1)

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

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