2017-08-14 83 views
1

如何使用用戶名設計註冊用戶? 我至今拋出我下面的錯誤:設計錯誤:不允許的參數

Error: 
Processing by Devise::SessionsController#new as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"oa1sf2dgKU/VpgOAI5ocnM8e5gNkuswxX9KKpTLFUZmUwtO40CFoseZiYQ3eQZ71bTw9R3aFOhpbD5EZcAVcGA==", "user"=>{"username"=>"MCarpintini", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"} 
Unpermitted parameters: :username, :password_confirmation 

登記表

.ui.middle.aligned.center.aligned.grid 
    .column 
    =form_for(resource, html: {class:"ui large form"}, as: resource_name,url: session_path(resource_name)) do |f| 
     .ui.stacked.segment 
     .field 
      .ui.left.icon.input 
      %i{class:"user icon"} 
      =f.text_field :username, placeholder: "Username" 
     .field 
      .ui.left.icon.input 
      %i{class:"mail icon"} 
      =f.email_field :email, placeholder:"Email" 
     .field 
      .ui.left.icon.input 
      %i{class:"lock icon"} 
      =f.password_field :password, placeholder:"Password" 

     .field 
      .ui.left.icon.input 
      %i{class:"repeat icon"} 
      =f.password_field :password_confirmation, placeholder:"Password Confirmation" 

     =f.submit "Register", class:"ui fluid large teal submit button" 
     .ui.error.message 
    .ui.message 
     Do you have account? 
     =link_to "Login", new_user_session_path 

用戶模式

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

end 

用戶表結構。

create_table "users", force: :cascade do |t| 
    t.string "username", default: "", null: false 
    t.string "avatar_file_name", default: "", null: false 
    t.string "avatar_content_type", default: "", null: false 
    t.integer "avatar_file_size", null: false 
    t.datetime "avatar_updated_at", null: false 
    t.string "email", default: "", null: false 
    t.string "encrypted_password", default: "", null: false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count", default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["email"], name: "index_users_on_email", unique: true 
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true 
end 

回答

2

你需要通過strong parameters允許額外的參數。既然你已經定義的自定義參數username,你就必須允許相同的:

before_action :configure_permitted_parameters, if: :devise_controller? 

def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :password_confirmation]) 
end 
+0

給我同樣的錯誤,我需要別的改變些什麼?謝謝! –

+0

@MatiasCarpintini。你在哪裏添加了上述過濾器? – hjpotter92

+0

在'應用程序/控制器/用戶/ registrations_controller.rb' –