2016-12-06 5 views
0

Ich verwende Rails 5 und PostGres 9.5. Ich habe Probleme beim Senden eines Formulars, das einen Benutzer in meiner Datenbank erstellen soll. Ich habe dies in meinem Controller"ActiveModel :: ForbiddenAttributesError" erhalten, wenn ich versuche, meinen Benutzer zu erstellen

def create 
    @user = User.new(params[:user]) 
    if @user.save 
     flash[:notice] = "You signed up successfully" 
     flash[:color]= "valid" 
    else 
     flash[:notice] = "Form is invalid" 
     flash[:color]= "invalid" 
    end 
    render "new" 
    end 

und hier ist, wie meine Tabelle in meiner Postgres-Datenbank sieht ...

sims=> \d users; 
             Table "public.users" 
     Column  |   Type    |      Modifiers      
--------------------+-----------------------------+---------------------------------------------------- 
id     | integer      | not null default nextval('users_id_seq'::regclass) 
username   | character varying   | 
email    | character varying   | 
encrypted_password | character varying   | 
salt    | character varying   | 
first_name   | character varying   | 
last_name   | character varying   | 
created_at   | timestamp without time zone | not null 
updated_at   | timestamp without time zone | not null 
Indexes: 
    "users_pkey" PRIMARY KEY, btree (id) 

Aber meine Form mit den folgenden Parametern auf erteile ich den Fehler, wie Sie sehen können von meinen Protokollen ...

Processing by UsersController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"q4YmPjUhD5olnRRgCt/gUuCDrb0lt+EqOxpzXGdtGHBtkwPEYgyp12H8lF04FHpqrZRZCip1Mo8/tvGQinPpJg==", "user"=>{"username"=>”mysuername”, "email"=>”[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Signup"} 
Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms) 



ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError): 

Es gibt keine weiteren Informationen in den Protokollen. Was muss ich noch tun, um mein Formular abschicken zu können?

Antwort

2

Rails verhindert das Speichern wegen Sicherheitsbedenken. Dieser Leitfaden hat eine schöne, kurze Erklärung: http://blog.teamtreehouse.com/rails-4-strong-paremeters

Ihr konkretes Beispiel zu beheben, die @user = User.new(params[:user]) Linie ändern:

@user = User.new(params.require(:user).permit(:username, :email, :password, :password_confirmation)) 
Verwandte Themen