![](/img/trans.png)
[英]Adding additional fields (with validation) to Devise view/model in Rails app
[英]Ruby on Rails: Error adding additional fields to devise user model
我正在嘗試添加“姓氏”,“姓氏”和“電話”字段。 但是,當我重新訪問本地主機時,總是會收到此錯誤:
NoMethodError in Devise::RegistrationsController#new
undefined method `configure_permitted_parameters' for #<Devise::RegistrationsController:0x00000101fcd008>
這就是我所做的:
首先,我創建了一個注冊控制器:
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters, :only => [:create]
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :phone, :email, :password, :password_confirmation) }
end
end
然后,我跑了:
rails g migration AddFieldsToUsers first_name:string last_name:string phone:int
其次是:
rake db:migrate
在航站樓...
然后我去添加
t.string :first_name,
t.string :last_name,
t.integer :phone,
在設計中創建用戶遷移文件。
我還嘗試將Add_column替換為AddFieldsToUsers遷移文件中的t.string:
class AddFieldsToUsers < ActiveRecord::Migration
def change
t.string :users, :first_name, :string
t.string :users, :last_name, :string
t.integer :users, :phone, :int
end
end
如果有人可以幫助您解決這一問題,我將非常感激。
首先- 關於遷移 :
class AddFieldsToUsers < ActiveRecord::Migration
def change
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :phone, :integer
end
end
$ rake db:migrate
其次-關於rails4中的權限:
這個有用的https://stackoverflow.com/a/19793371/3563993和這個
application_contoller.rb
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
...
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :first_name, :last_name, :fone) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :first_name, :last_name, :fone)
end
end
在用戶類中的attr_accessible:之后放置first_name,last_name,phone。 如果您使用滑軌3
您應該根據設計文檔在應用程序控制器中添加動作configure_permitted_parameters
。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
您的錯誤直接表明您沒有針對新操作的configure_permitted_parameters
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.