【发布时间】:2018-11-10 19:13:19
【问题描述】:
我正在使用 Rails 5.2、ruby 2.4.1 并使用 Postgres(PG) 数据库。我正在尝试将 javascript 变量设置为我的数据库中的值。除了名为“名称”的第一列之外,我在所有这些上都取得了成功。出于某种原因,每个名称前都添加了两个额外的空格。然后它最终会在其中一个上抛出一个错误,说无效或意外的令牌。当它抛出错误时,代码看起来像是插入了一个换行符。
fullName: '
Chase Dougherty',
firmName: 'Chase Bank', etc...
看起来像之前的每个人
fullName: ' Example Name',
firmName: 'Example Bank'. etc...
我的数据库中我的姓名列是正确的,因为我可以在每一行上单击“显示”并且没有多余的空格。
如果我删除 info.name,其他一切正常。如果我从 erb 标记中删除等号,它可以工作,但我的 javascript 变量将不保存任何内容(显然)。加载时会发生此错误。有没有人有一些想法我可以测试来解决这个问题?这是我的代码,如果你想测试一下。
<script>
setContents = function setsPostgresDatatoJavascriptVariables(){
<% collective.each do |info| %>
typeMarkers = [
{
fullName: '<%= info.name %>',
firmName:'<b><%= info.firm_name %></b>',
firmNumber:'<b><%= info.firm_number %></b>',
adjustmentType:'<b><%= info.adjustment_type %></b>',
address:'<%= info.address_1 %>',
},
];
<% end %>
}
<script>
【问题讨论】:
-
"我的数据库中的姓名列是正确的,因为..." 在显示页面上,您的浏览器在渲染时会压缩空格。您应该做一个查看源代码,它将显示任何空白。检查一下,如果名称在那里显示任何新行,请告诉我。
-
谢谢!我会调查的。我得赶紧跑去开会,但马上就回来。
-
是的,我认为这取决于输入的空格类型。如果空格是用户输入的字符,它可以是任意数量的 unicode 空格字符(包括中断空格)。您可以尝试执行类似
info.name.chars.map(&:ord)的操作,看看它是什么类型的空白,然后通过模型上的某种方法了解如何删除它。 -
@MarlinPierce 和 Matthew 问题出在用户的空白处。 Marlin,你说得对,除非我从浏览器查看源代码,否则它不会出现在显示页面中。我在模型中使用了 strip 方法来清除第一列的多余空间。
标签: javascript ruby-on-rails postgresql erb