Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设计重置密码帖子而不是放置_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 设计重置密码帖子而不是放置

Ruby on rails 设计重置密码帖子而不是放置,ruby-on-rails,devise,Ruby On Rails,Devise,我在我的应用程序中使用了非定制版本的Desive,在重置密码功能方面遇到了一些问题 默认的重置密码表单的方法是放置,但在提交表单时,它会发布,这会导致它给我一个关于缺少电子邮件字段的错误。Deviate的PasswordsController中的POST/create方法是通过电子邮件向用户发送密码重置链接。PUT/update方法用于实际重置密码 设计的东西都没有任何改变。Desive版本为3.5.7,Rails版本为4.2.6 我将所有相关代码放在这里的要点中: 非常感谢您的帮助……在您的日

我在我的应用程序中使用了非定制版本的Desive,在重置密码功能方面遇到了一些问题

默认的重置密码表单的方法是放置,但在提交表单时,它会发布,这会导致它给我一个关于缺少电子邮件字段的错误。Deviate的PasswordsController中的POST/create方法是通过电子邮件向用户发送密码重置链接。PUT/update方法用于实际重置密码

设计的东西都没有任何改变。Desive版本为3.5.7,Rails版本为4.2.6

我将所有相关代码放在这里的要点中:

非常感谢您的帮助……

在您的日志中写道:
layouts/application(3.3ms)中呈现的designe/passwords/edit.html.erb

您确定edit.html.erb文件呈现了
form.html.erb
视图吗?
因为当我查看
source.html
文件时,它似乎呈现了一个不同的表单,该表单具有POST方法的路径。

form.html.erb
使用PUT方法。因此,在我看来,呈现的表单是错误的。

edit.html.erb和form.html.erb是同一件事。(我更新了要点以反映这一点)。当表单发布时,它会转到新的.html.erb表单。让我担心的是edit.html.erb和source.html不一样。如果要呈现edit.html.erb,那么source.html.erb应该具有要放置的方法(检查source.html的第17行)。你们在渲染edit.html.erb吗?我读了很多rails文档,它说应该放method=“post”。Rails然后生成一个隐藏的输入,如下所示:。那么rails应该使用PUT方法。看看你的耙子路线,第2-6行。post方法将映射到create操作(如果我理解正确,这不是您想要的)。您需要的是更新操作,它对应于PUT方法。这很奇怪,因为它调用的是create操作而不是update操作。它之所以要求缺少email字段,是因为它正是new.html.erb表单所需要的。