使用 erb 保存 HTML 表单字段值
Persist HTML form field value using erb
我在使用 erb 设置 HTML 表单字段的值时遇到问题。场景是用户输入了无效密码——我不希望他们必须重新输入 name/email-address/etc,因此这些应该保留在适当的表单字段中。
我正在使用 erb 来执行此操作,如下所示:
#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=<%=@user.real_name%> ><br>
User Name:
<input type="text" name="user_name" value=<%=@user.user_name%> ><br>
etc.
我的问题是代码只填充 HTML 字段直到第一个 space 在任何字符串 erb 给它。例如如果 @user.real_name
为 "Foo Bar Baz"
,则只有 "Foo"
会出现在 "real_name"
输入字段中。
经过测试,@user.real_name
没有被破坏——它仍然设置为 "Foo Bar Baz",即使在表单呈现之后。如果我对表单字段的值进行硬编码,它可以呈现一个带有 spaces 的名称。这与 erb 和 HTML 之间的相互作用有关。知道问题出在哪里吗?
只需在属性周围添加引号:
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>
我在使用 erb 设置 HTML 表单字段的值时遇到问题。场景是用户输入了无效密码——我不希望他们必须重新输入 name/email-address/etc,因此这些应该保留在适当的表单字段中。
我正在使用 erb 来执行此操作,如下所示:
#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=<%=@user.real_name%> ><br>
User Name:
<input type="text" name="user_name" value=<%=@user.user_name%> ><br>
etc.
我的问题是代码只填充 HTML 字段直到第一个 space 在任何字符串 erb 给它。例如如果 @user.real_name
为 "Foo Bar Baz"
,则只有 "Foo"
会出现在 "real_name"
输入字段中。
经过测试,@user.real_name
没有被破坏——它仍然设置为 "Foo Bar Baz",即使在表单呈现之后。如果我对表单字段的值进行硬编码,它可以呈现一个带有 spaces 的名称。这与 erb 和 HTML 之间的相互作用有关。知道问题出在哪里吗?
只需在属性周围添加引号:
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>