Rails中html.erb模板HTML input值空格后内容丢失问题求助
解决Rails erb模板中输入框value值空格后丢失的问题
这问题我之前开发时也踩过同款坑!核心原因就是HTML属性值没有用引号包裹,导致浏览器解析时出错了。
你看,你写的代码是:
<% all = "All value" %> <input type="text" name="name" id="name" value=<%= all %>>
渲染后会变成:
<input type="text" name="name" id="name" value=All value>
在HTML语法里,属性值如果包含空格、特殊字符,必须用双引号(或单引号)包裹。浏览器看到value=All value时,会把All当成value的属性值,后面的value会被当成无效的多余内容直接忽略,所以就出现了只显示All的情况。
两种解决办法:
手动给属性值加引号:把代码改成这样,给
value的赋值部分加上双引号:<% all = "All value" %> <input type="text" name="name" id="name" value="<%= all %>">这样渲染后就会得到你想要的结果:
<input type="text" name="name" id="name" value="All value">使用Rails内置的表单Helper(更推荐):用
text_field_tag来生成输入框,它会自动帮你处理属性的引号和特殊字符转义,代码更简洁安全:<% all = "All value" %> <%= text_field_tag :name, all, id: "name" %>这个Helper渲染出来的HTML和上面手动写的正确结果完全一致,而且如果你的
all变量里包含引号、尖括号这类特殊字符,它还会自动转义,避免XSS风险。
内容的提问来源于stack exchange,提问作者Ninh Le
相关产品推荐
相关产品推荐

