【问题标题】:Rails Devise password edit not workingRails 设计密码编辑不起作用
【发布时间】:2013-03-05 19:24:37
【问题描述】:

我在菜单中有以下链接:

<li><%= link_to "Change your password", edit_user_registration_path %>

这是我的路线:

devise_for :users

当链接被点击时,我收到以下路由错误:

No route matches {:controller=>"devise/admin"}

我不明白我做错了什么。

这里是设计路线:

        new_user_session GET    /users/sign_in(.:format)          devise/sessions#new
        user_session POST   /users/sign_in(.:format)          devise/sessions#create
destroy_user_session GET    /users/sign_out(.:format)         devise/sessions#destroy
       user_password POST   /users/password(.:format)         devise/passwords#create
   new_user_password GET    /users/password/new(.:format)     devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format)    devise/passwords#edit
                     PUT    /users/password(.:format)         devise/passwords#update
 cancel_user_registration GET    /users/cancel(.:format)    devise/registrations#cancel
   user_registration POST   /users(.:format)               devise/registrations#create
new_user_registration GET    /users/sign_up(.:format)         devise/registrations#new
edit_user_registration GET    /users/edit(.:format)           devise/registrations#edit
                     PUT    /users(.:format)
                     PUT    /users(.:format)               devise/registrations#update
                     DELETE /users(.:format)            devise/registrations#destroy

【问题讨论】:

  • 链接/路由正在寻找devise/admin,但您已将路由设置为devise_for :users
  • 有趣的是我只有一个用户模型。我使用 simple_roles 和 cancan。所有用户都是管理员,但我从未更改过设计路线...奇怪...
  • 你能粘贴你的路线吗? bundle exec rake 路由 | grep 设计
  • 我将设计路线放在我的帖子中。

标签: ruby-on-rails devise passwords


【解决方案1】:

如果我没记错的话,我认为更改密码链接的路径是edit_password_url

【讨论】:

    【解决方案2】:

    在没有看到更多代码的情况下,我能提供的最佳解决方案就是删除设计并将其放回原处。只需运行 rails d 命令反转创建设计的生成命令并重新开始。

    【讨论】:

      【解决方案3】:

      你需要告诉 Rails 你正在为谁编辑密码

      正确的做法是这样的

      <li><%= link_to "Change your password", edit_user_registration_path(current_user) %>
      

      current_user 是 devise 提供的助手。希望有帮助!

      【讨论】:

        【解决方案4】:

        如果您有一个设计模型用户,您可以使用此路径路由到更改密码页面:

        edit_user_registration_path
        

        然后你可以像这样在你的视图中使用它:

        <%= link_to 'Change Password', edit_user_registration_path %>
        

        【讨论】:

          猜你喜欢
          • 2011-11-29
          • 2012-06-09
          • 1970-01-01
          • 2013-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-08
          • 1970-01-01
          相关资源
          最近更新 更多