我想知道如何在image_tag中指定完整的URL src attibute?
目前我使用:
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
我尝试过运行rake资产:precompile&& rake assets:clean_expired但应用程序仍然将完整的URL视为预编译资产。
提前致谢!
答案 0 :(得分: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
表示。
你应该做一些事情:
team_logo
始终是格式正确的网址。before_validation
回调,以清除传入的team_logo
值中的任何杂散空格。team_logo
值并清理它们,您可能需要手动修复或删除其中的一些值。清理完数据后,image_tag
将按预期工作。
我想你可以剥掉视图中的空白,这是非常讨厌的,除非你需要立即修复以防止业务在接下来的五分钟内失败,否则不应该这样做。即便如此,你还是要清理数据并立即退出“清理视图中的空白”。