【问题标题】:Devise creating funky edit user password path设计创建时髦的编辑用户密码路径
【发布时间】:2013-09-26 21:57:55
【问题描述】:

我正在按照解决方案 2 中有关如何允许用户在没有注册表的情况下更改密码的所有说明进行操作:

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-password

我也相应地更新了我的编辑表单以反映新的user_registration_path

<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name), :html => { :method => :put }) do |f| %>

路径显示在 rake 路由中。我没有得到的是当表单被渲染时,它被渲染成这样:

<form accept-charset="UTF-8" action="/users.user" class="edit_user" id="edit_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="D3ZBYyAfI+sXMsJiKy5+ZsjcISg8yqKTDAdXQm6Heqs=" /></div>

这个动作/users.user是怎么回事?当我在编辑表单上点击“更新”时,这让我很伤心,我不确定它是从哪里生成这个动作的。我的 routes.rb 有这个:

devise_for :users, :skip => [:registrations]                                          
    as :user do
      get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'    
      put 'users' => 'devise/registrations#update', :as => 'user_registration'            
    end

我得到的最终错误如下:

ActionController::UnknownFormat in Devise::RegistrationsController#update 

【问题讨论】:

    标签: ruby-on-rails ruby devise ruby-on-rails-4


    【解决方案1】:

    您的user_registration_path 似乎没有接受任何参数。由于您无论如何都给它一个,它被解释为一种格式(如 RSS 或 XML)。这会导致 UnknownFormat 错误,因为您的更新操作无法处理不存在的 "user" 格式。

    解决方案:只需从user_registration_path 调用中删除resource_name 参数即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 2017-04-12
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多