发送密码重置后Rails设计说明重定向到错误的页面

时间:2012-07-20 16:03:16

标签: ruby-on-rails email devise passwords

我在我的rails应用程序中使用设计。出于某种原因,当您点击“发送密码重置说明”按钮后,在输入电子邮件后,它会带您进入包含此网址/users/password.user的空白页面。我不知道它为什么这样做,也不知道如何改变它。

我不确切知道要发布的代码,所以只需评论您希望我添加的摘录。感谢。

对于记录,密码重置电子邮件和更改密码令牌完美地工作,它只有这个奇怪的重定向(或缺少重定向)。

这些是路线:

devise_for :users, :controllers => {:registrations => 'registrations', :invitations => 'invitations', :confirmations => 'confirmations'}, :except => [:show]

密码路径助手为edit_password_url(@resource, :reset_password_token => @resource.reset_password_token)

config.reset_password_keys:

config.reset_password_keys = [ :login ]

密码重置表格:

            <head>
              <%= stylesheet_link_tag "passreset" %>  
            </head>

            <body>

                <div id="box">
                        <%= form_for(resource, :as => resource_name, :url => user_password_path(resource_name), :html => { :method => :post }) do |f| %>
                            <%= devise_error_messages! %>

                                <%= f.text_field :id,:name => "user[login]", :placeholder => "Username or Email"%>

                                <input name="commit" type="submit" name="" value="Submit" />
                        <% end %>
                </div>
            </body>

3 个答案:

答案 0 :(得分:0)

如果我理解正确,您似乎需要编辑您的观点或设计初始化文件=&gt;配置/初始化/ devise.rb

您可以通过运行设计生成器来编辑视图 rails generate devise:views users

我希望有帮助

答案 1 :(得分:0)

我们遇到了类似的问题。对我们来说,当我们编辑自己的帐户时,Devise就把我们记录下来了。我们使用了sign_in()设计助手,最后使用了这段代码:

user_controller

def update

# need to know if user is changing their own password for re-sign in purposes.
is_current_user =  (@user == current_user)

password_change = !params[:user][:password].empty?
if (password_change)
  @user.update_with_password(params[:user])
else
  @user.update_without_password(params[:user])
end

if is_current_user # Devise signs us out, so...
  sign_in(@user, :bypass => true)
end


@user.has_temp_password = false
@user.save!

if is_current_user
  redirect_to root_path, notice: 'Your account was successfully updated.'
else
  redirect_to users_path, notice: 'The user was successfully updated.'
end

答案 2 :(得分:0)

尝试将表单中的网址更改为

:url => password_path(resource_name)