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?
Danke, das war es! – adc17