【问题标题】:Persist HTML form field value using erb使用 erb 持久化 HTML 表单字段值
【发布时间】:2017-05-07 12:20:02
【问题描述】:

我在使用 erb 设置 HTML 表单字段的值时遇到问题。场景是用户输入了无效密码——我不希望他们必须重新输入他们的姓名/电子邮件地址/等,所以这些应该保留在适当的表单字段中。

我正在使用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 字段,直到任何字符串 erb 给它的第一个空格。例如如果@user.real_name"Foo Bar Baz",则"real_name" 输入字段中只会出现"Foo"

经过测试,@user.real_name 没有被破坏——即使在表单呈现后它仍然设置为“Foo Bar Baz”。如果我对表单字段的值进行硬编码,它可以呈现带有空格的名称。这与 erb 和打破这一点的 HTML 之间的相互作用有关。知道可能是什么问题吗?

【问题讨论】:

    标签: html ruby forms erb


    【解决方案1】:

    只需在属性周围添加引号:

    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>
    

    【讨论】:

    • 谢谢,就是这样!
    猜你喜欢
    • 2013-01-25
    • 2010-11-24
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多