2016-06-15 75 views
0

我正在使用這些Devicon font icons用於各種編程語言。如何動態檢查是否存在遠程字體圖標?

他們沒有每個圖標,但他們最多。

我想要做的是有一個默認圖標,我用於該字體庫不支持的語言。

這些都是他們的指令:

<!-- in your header --> 
<link rel="stylesheet" href="https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css"> 

<!-- in your body --> 
<i class="devicon-ruby-plain"></i> 

因此,在我看來,我有這樣的:

 <div class="vote-icon"> 
      <i class="devicon-<%= question.language %>-plain"></i> 
     </div> 

question.language是他們的問題,用戶提交的語言。

現在,當這產生一個不存在的圖標,它只是留下一個空白處。

但我不太清楚如何檢查圖標是否存在,然後將其替換爲默認值。

想法?

+0

從哪裏'question.language'從哪裏來? – uzaif

+0

我的本地數據庫。我正在使用語法高亮器(Rouge),它爲Lexer提供了一個支持的語言庫。無論何時用戶創建問題,他們都可以從相當廣泛的列表中選擇一種語言。 – marcamillion

+0

是否在資產中添加了字體? – uzaif

回答

1

所以唯一的窪對我來說,實際上這是爲了解析Devicons提供的圖標列表。

因此,我手動創建了一個列表在輔助方法的數組中,然後在那裏做了零檢查。

所以它看起來像這樣:

def language_icon(language) 
    devicons = ["amazonwebservices", "android", "angularjs", "apache", "appcelerator", "apple", "atom", "backbonejs", 
     "bitbucket", "bootstrap", "bower", "c", "chrome", "codeigniter", "coffeescript", "confluence", "cplusplus", "csharp", 
     "css3", "d3js", "debian", "django", "docker", "doctrine", "dot-net", "drupal", "erlang", "firefox", "foundation", "gimp", 
     "git", "github", "gitlab", "go", "grunt", "gulp", "heroku", "html5", "ie10", "illustrator", "inkscape", "java", "javascript", 
     "jeet", "jetbrains", "jquery", "krakenjs", "laravel", "less", "linux", "meteor", "mongodb", "moodle", "mysql", "nginx", 
     "nodejs", "nodewebkit", "orale", "photoshop", "php", "phpstorm", "postgresql", "python", "rails", "react", "redhat", "redis", 
     "ruby", "safari", "sass", "sourcetree", "ssh", "symfony", "travis", "trello", "ubuntu", "vim", "windows8", "wordpress", "yii", "zend"] 

    if devicons.include?(language) 
     content_tag(:i, "", class: "devicon-#{language}-plain") 
    else 
     content_tag(:i, "", class: "fa fa-diamond") 
    end 
    end 

這就像一個魅力。

我希望這可以幫助別人!

0

試試這個

require 'open-uri' 
=> true 
f = open("https://cdn.rawgit.com/konpa/devicon/master/devicon.min.css").read 
...load entire css file ... 

然後你做一個搜索

@icon = f["devicon-css3-plain"] 

如果@icon是零意味着該圖標不復存在

在你的情況下

@icon = f[question.language] 
+0

完全困惑如何適用於這裏。我如何檢測''是否爲'nil'? – marcamillion

+0

在你的控制器和視圖中有類似於@icon || = question.language的內容。 -plain」>' –

+0

好的......我明白你的意思了。不,你誤解了這個問題。 'question.language'中永遠不會有'nil'值。然而,可能有一個值來自'問題'(比如'make')。語言「,它不存在於各種編程語言的圖標列表中。現在,它什麼都不渲染。但我想檢測它沒有找到圖標並渲染其他東西。沒有內建的'nil'值或對象供我查詢,所以我試圖找到另一種方法來確定它是否確實是'nil'值。 – marcamillion