2013-07-19 83 views
0

我想知道如何在image_tag中指定完整的URL src attibute?Ruby On Rails - 图像标签问题

目前我使用:

image_tag(object.team.team_logo, :alt => object.team.name) 

和SRC attibute被错误地转化为:

http://0.0.0.0:3000/assets/%20http://a.espncdn.com/i/teamlogos/soccer/500/103.png 

我试图乳宁耙资产:预编译& &耙资产:clean_expired但应用程序仍对待完整的网址作为预编译的资源。

在此先感谢!

回答

2

在将数据放入数据库之前,您需要正确清理并验证您的team_logo值:object.team.team_logo值的第一个字符是空格。

如果跟踪通过image_tag实现,你会发现它最终调用asset_path

def asset_path(source, options = {}) 
    source = source.to_s 
    return "" unless source.present? 
    return source if source =~ URI_REGEXP 
    #... 

你有team_logo领先的空间,这样的URI_REGEXP测试失败和Rails会预先考虑资产路径(和URL编码字符串,因此您的空间的%20表示)。

你应该做的几件事情:

  1. 添加验证你的模型,以确保team_logo始终是一个很好形成URL。
  2. 添加一个before_validation回调到您的模型来清理传入的team_logo值中的任何空白空格。
  3. 通过数据库中的所有team_logo值并清除它们,您可能需要手动修复或删除其中一些值。

清理完数据后,您的image_tag将按预期工作。

我想你可以去掉视图中的空白,这很糟糕,除非你需要立即修复,以防止企业在未来五分钟内失败,否则不应该这样做。即便如此,您仍然希望清理数据,并立即停止“清理视图中的空白”混乱。