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
。我启用了使用电子邮件和用户名登录,这就是为什么我一直收到那个错误。开枪打我,这是我的问题。非常感谢。这是我的问题。非常感谢。