2016-06-15 52 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