Ruby on rails 设计密码重置问题(新用户?)
当用户的电子邮件被输入到忘记密码表单并提交时,我收到一个错误,说Ruby on rails 设计密码重置问题(新用户?),ruby-on-rails,ruby,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,当用户的电子邮件被输入到忘记密码表单并提交时,我收到一个错误,说登录不能为空。我四处寻找这个错误消息,但似乎在任何地方都找不到 这是我的视图/designe/passwords/new.html.haml: %div.registration_page %h2 Forgot your password? = form_for(resource, :as => resource_name, :url => user_password_path, :html => { :m
登录不能为空
。我四处寻找这个错误消息,但似乎在任何地方都找不到
这是我的视图/designe/passwords/new.html.haml
:
%div.registration_page
%h2 Forgot your password?
= form_for(resource, :as => resource_name, :url => user_password_path, :html => { :method => :post, :id => 'forgot_pw_form', :class => 'forgot_pw' }) do |f|
%div
= f.email_field :email, :placeholder => 'Email', :autofocus => true, :autocomplete => 'off'
%div.email_error.error
%input.btn.btn-success{:type => 'submit', :value => 'Send Instructions'}
= render "devise/shared/links"
表单正在发布到users/password
,但我注意到我的忘记密码表单附加了class='new\u user'
。以下是我的表单显示的内容:
<form accept-charset='UTF-8' action='/users/password' class='new_user' id='forgot_pw_form' method='post' novalidate='novalidate'></form>
如何设置Desive的忘记密码功能?为什么我会收到这个错误消息,为什么会在那里添加这个类
我试过:
- 添加我自己的密码控制器并为我的自定义控制器添加新路由。同样的错误
- 将我自己的类和id添加到表单中。这将成功更改表单的id和类,但会恢复为
new\u用户的类和id
谢谢。我认为您的主要问题可能是以下问题之一: 1) 您的路线设置不正确,应该如下所示
devise_for :users, :controllers => {:sessions => 'devise/sessions', :registrations => 'devise/registrations', :passwords => 'devise/passwords'}, :skip => [:sessions] do
2) 您的密码/new.html.erb看起来有点不正确,请尝试以下操作:
<h2>Forgot your password?</h2>
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Send me reset password instructions" %></div>
<% end %>
<%= render "devise/shared/links" %>
你可以从这个设置中看到,我正在使用gmail进行测试。按照我提供的内容应该可以解决您的问题。让我知道这是否有效
更新
假定身份验证密钥将:username设置为必填字段
尝试编辑app/views/designe/passwords/new.html.erb并替换:
<%= f.label :email %>
<br />
<%= f.text_field :email %>
与:
我认为您的主要问题可能是以下问题之一:
1) 您的路线设置不正确,应该如下所示
devise_for :users, :controllers => {:sessions => 'devise/sessions', :registrations => 'devise/registrations', :passwords => 'devise/passwords'}, :skip => [:sessions] do
2) 您的密码/new.html.erb看起来有点不正确,请尝试以下操作:
<h2>Forgot your password?</h2>
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Send me reset password instructions" %></div>
<% end %>
<%= render "devise/shared/links" %>
你可以从这个设置中看到,我正在使用gmail进行测试。按照我提供的内容应该可以解决您的问题。让我知道这是否有效
更新
假定身份验证密钥将:username设置为必填字段
尝试编辑app/views/designe/passwords/new.html.erb并替换:
<%= f.label :email %>
<br />
<%= f.text_field :email %>
与:
我也有这个问题。我缺少"方法"标记,因此它被路由到密码#创建而不是密码#更新
如果是同一个问题,您的表格中的以下内容将帮助您继续:
我也有这个问题。我缺少"方法"标记,因此它被路由到密码#创建而不是密码#更新
如果是同一个问题,您的表格中的以下内容将帮助您继续:
我的路线似乎设置正确。我有自定义的session
和registration
控制器(分别命名为sessions\u controller.rb
和registrations\u controller.rb
)。我的smtp选项的设置也与您指定的完全相同。当我在表单中输入一封电子邮件时,我会收到一条警告,说登录不能为空。
当唯一的输入元素是电子邮件字段时,我不知道为什么会出现此错误。您是否也在initaliziers/designe.rb中签入了您已启用config.authentication\u keys=[:email]
是的,我已启用。我发现了我愚蠢的错误f.email\u字段:登录
而不是f.email\u字段:email
。我启用了使用电子邮件和用户名登录,这就是为什么我一直收到那个错误。开枪打我,我的路线似乎设置正确。我有自定义的session
和registration
控制器(分别命名为sessions\u controller.rb
和registrations\u controller.rb
)。我的smtp选项的设置也与您指定的完全相同。当我在表单中输入一封电子邮件时,我会收到一条警告,说登录不能为空。
当唯一的输入元素是电子邮件字段时,我不知道为什么会出现此错误。您是否也在initaliziers/designe.rb中签入了您已启用config.authentication\u keys=[:email]
是的,我已启用。我发现了我愚蠢的错误f.email\u字段:登录
而不是f.email\u字段:email
。我启用了使用电子邮件和用户名登录,这就是为什么我一直收到那个错误。开枪打我,这是我的问题。非常感谢。这是我的问题。非常感谢。