带有'#'符号的图像名称使用image_tag Rails 3.2

时间:2013-05-31 17:48:41

标签: ruby-on-rails-3 routes

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

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

<% 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和可用的不同库。

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

很抱歉,如果我的帖子不清楚,感谢您的帮助。

的Jaime。

2 个答案:

答案 0 :(得分:0)

您可以将#s替换为您知道永远不会出现在部件编号中的占位符,例如&amp;或^然后在服务器端将其移回原来

$("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

可能不是最好的解决方案,但它应该做的伎俩

答案 1 :(得分: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

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

我很感激帮助,我希望这对其他人有用。

的Jaime。