我的用戶有name
以及電子郵件,密碼等常規設計列。我希望用戶能夠編輯自己的帳戶設置 - 包括他們的名字 - 在/users/edit
,作爲registrations
的一部分,Devise爲我們提供了開箱即用的功能。用現有的Devise用戶更新自定義用戶屬性/編輯功能
我添加輸入name
到視圖(這裏的簡化):
= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
= f.input :name, required: false
= f.input :email, required: true
= f.input :password, autocomplete: 'off', required: false
= f.input :password_confirmation, required: false
= f.submit 'Save'
這種形式正確呈現的名字,我可以編輯和保存,但是名字不被更新,而其他的東西。我想到Devise會採取任何形式的params
,並用這些參數更新resource
,不管它們是什麼,但這似乎並不是這樣。
我有它通過覆蓋控制器(再次顯示只有最重要的代碼)工作:
class RegistrationsController < Devise::RegistrationsController
def update
resource.name = params[:user][:name]
resource.save
super
end
end
這工作不錯,但有一個簡單,內置的方式做到這一點,我失蹤?
乾杯。我最終將它添加到'application_controller'而不是初始化程序。 –
將它添加到'application_controller'將會訣竅,但同時它會讓你的控制器笨拙。將它添加到單獨的初始化程序中,可以輕鬆讀取/配置,並保持控制器代碼的清潔。無論如何,最後的電話是你的:) – 31piy