簡體   English   中英

Ruby On Rails - 圖像標簽問題

[英]Ruby On Rails - Image Tag Issue

我想知道如何在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資產:預編譯&& rake資產:clean_expired但應用程序仍將完整URL視為預編譯資產。

提前致謝!

在將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將按預期工作。

我想你可以剝掉你視圖中那些非常討厭的空白,除非你需要立即修復以防止業務在接下來的五分鍾內失敗,否則不應該這樣做。 即便如此,你還是要清理數據並立即退出“清理視圖中的空白”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM