0

我有一个应用程序可以为我们的制作团队创建和打印看板卡。一切正常,直到零件编号中包含“#”符号。我研究并发现了一些相关的帖子,说明该标志之后的所有内容都不会返回服务器。

我的问题是包含 # 符号的部件号不会被正确查询,因此该卡的条形码图像不会显示,这是我的代码:

<% if @card.area.name != "FG" %>
        <div style="text-align:center;"><%= image_tag "#{@card.part_no}" + "-" + "#{count}" + "-" + "#{@card.finish}" + "-" + "#{@card.card_index}" + ".png" %></div>
<% else %>
        <div style="text-align:center;"><%= image_tag "#{@card.part_no}" + "-" + "#{count}" + "-" + "#{@card.finish}" + ".png" %></div>
<% end %>

我是 Rails 的新手,甚至对 Javascript 和可用的不同库也比较陌生。

关于如何@card.part_no使用 ajax 或 javascript 正确获取该值的任何方向?

对不起,如果我的帖子不是那么清楚,我感谢您的帮助。

詹姆。

4

2 回答 2

0

解决我的问题的方法是使用 url_encode 方法对 URL 进行编码,这样浏览器就不会将 # 符号解释为锚点。

<div style="text-align:center;"><%= image_tag url_encode("#{@card.part_no}" + "-" + "#{count}" + "-" + "#{@card.finish}" + "-" + "#{@card.card_index}" + ".png") %></div>

这将采取以下措施:

2134323#1-1-6-ASDS.png

并输出:

2134323%231-1-6-ASDS.png

因此,允许应用程序正确找到资产。

感谢您的帮助,我希望这对其他人有用。

詹姆。

于 2013-07-01T23:37:19.900 回答
0

您可以用占位符替换 #'s,您知道该占位符永远不会出现在 & 或 ^ 之类的部件号中,然后在服务器端将其移回,如下所示

$("card_from").submit( function() {
  card_no_element = $("card_no_input")
  var old_val = $(card_no_element).val();
  $(card_no_element).val(old_val.replace(/#/,"^"));
})

那么可能在模型中我会

Card << ActiveRecord::Base
  ...
  before_save :replace_carrots_with_dollars

  def replace_carrots_with_dollars
    self.part_no.gsub!("^","#")
  end

end

可能不是有史以来最好的解决方案,但它应该可以解决问题

于 2013-06-01T23:20:36.877 回答