无法覆盖Devise注册控制器

时间:2015-02-06 08:35:53

标签: ruby-on-rails devise

我已经创建了一个自定义注册控制器,可以在注册时为用户添加名字和姓氏。现在我似乎无法让控制器允许用户更新相同的信息。

这是我的自定义注册控制器的结尾:

  protected

  ### CUSTOM ###

  def sign_up_params

    #devise_parameter_sanitizer.sanitize(:sign_up)
    params.require(:user).permit(:email, :password, :password_confirmation, :name_first, :name_last, :phone, roles_attributes: [ company_attributes: [ :id, :name, :address1, :address2, :city, :province, :postal ] ] )

  end

  def account_update_params
    params.require(:user).permit(:email, :password, :password_confirmation, :current_password, :name_first, :name_last, :phone, :mobile, :title, :location, :timezone )
  end


  def after_update_path_for(resource)
    edit_user_registration_path
  end

更新我的日志后显示30​​2错误,我的重定向转到根URL而不是edit_user_registration_path,并且记录未更新。我基本上遵循这个:

http://www.jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html

以下是我的设计路线:

  devise_for :users, :skip => [:sessions, :registrations], :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions' }
  as :user do
    #resource :registration, only: [:new, :create, :edit, :update]
    get "/register" => "devise/registrations#new", :as => :user_registration
    get "/account/profile" => "devise/registrations#edit", :as => :edit_user_registration
    patch "/account/profile" => "devise/registrations#update"
    put "/account/profile" => "devise/registrations#update", :as => :update_user_registration
    get '/signin' => 'devise/sessions#new', :as => :new_user_session
    post '/signin' => 'devise/sessions#create', :as => :user_session
    delete '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
  end

和我的日志:

Processing by Devise::RegistrationsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Q6T3nT9Z5h+n6BLP27wQ1F3UZ+Zp9t8Y/rLxIkEMYWM=", "user"=>{"email"=>"xxxxxxxx", "name_first"=>"xxx", "name_last"=>"xxxx", "phone"=>"xxxxxxx", "mobile"=>"", "title"=>"", "location"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "current_password"=>"[FILTERED]"}, "commit"=>"Update"}
Redirected to http://localhost:3000/
Completed 302 Found in 83ms (ActiveRecord: 0.7ms)
Started GET "/" for 127.0.0.1 at 2015-02-06 01:25:25 -0700
Processing by IndexController#landing as HTML
  Rendered index/landing.html.erb within layouts/landing (0.0ms)
Completed 200 OK in 6ms (Views: 5.3ms | ActiveRecord: 0.3ms)

更新

我回头看,我的注册系统现在也被打破了。不知道我做了什么。我的devise_for控制器语句似乎被忽略了。我的注册系统有嵌套属性和其他用户字段,也是失败的。即使字段有效,表单也会启动验证错误。

更多关于Gist的代码:https://gist.github.com/jasper502/065a63fde266fac1fbf5

1 个答案:

答案 0 :(得分:0)

请参阅此更新的问题:Devise with additional user fields, nested models / attributes and custom routes

我最终将我的路线从“devise / ...”更改为“user / ...”,这似乎可以解决问题。

全部要点:https://gist.github.com/065a63fde266fac1fbf5.git