2017-05-07 2 views
0

Ich habe ein Problem, wenn Sie erb verwenden, um den Wert eines HTML-Formularfelds festzulegen. Das Szenario besteht darin, dass der Benutzer ein ungültiges Passwort eingegeben hat - ich möchte nicht, dass sie ihren Namen/ihre E-Mail-Adresse/etc. Erneut eingeben müssen, damit diese in den entsprechenden Formularfeldern verbleiben.Persist HTML-Formularfeldwert mit Hilfe von erb

ich erb bin mit, dies zu tun, wie unten:

#app.rb 
post '/new-user' do 
    @user = User.new({params}) 
    if @user.save # <-- this will fail if user info is invalid 
     session[:user_id] = @user.id 
     redirect '/chitter-newsfeed' 
    else 
     flash.now[:notice] = 'Password and confirmation password do not match' 
     erb :sign_up 
    end 
    end 

#sign_up.erb 
<form action="/new-user" method="post" > 
    Name: 
    <input type="text" name="real_name" value=<%[email protected]_name%> ><br> 
    User Name: 
    <input type="text" name="user_name" value=<%[email protected]_name%> ><br> 
etc. 

Mein Problem ist, dass der Code nur die Felder HTML auffüllt mit dem ersten Platz in welcher Saite erb es gibt. z.B. Wenn @user.real_name"Foo Bar Baz" ist, erscheint nur "Foo" im Eingabefeld .

Nachdem dies getestet wurde, wird @user.real_name nicht beschädigt - es bleibt auf "Foo Bar Baz" eingestellt, auch nachdem das Formular gerendert wurde. Und wenn ich den Wert des Formularfelds fest codiere, kann es einen Namen mit Leerzeichen darstellen. Es hat etwas mit dem Zusammenspiel zwischen erb und dem HTML zu tun, das dies bricht. Irgendeine Idee, was das Problem sein könnte?

Antwort

3

Fügen Sie einfach Anführungszeichen um die Attribute:

Name: 
<input type="text" name="real_name" value="<%= @user.real_name %>"><br> 
User Name: 
<input type="text" name="user_name" value="<%= @user.user_name %>"><br> 
+0

Danke, das war es! – adc17