Rails Admin枚举字段HTML不转义显示Font Awesome图标求助
在Rails Admin中渲染Font Awesome图标作为Enum选项
问题的核心是Rails Admin默认会对Enum字段的选项标签做HTML转义,导致你的Font Awesome图标代码变成纯文本显示。这里有两种简单的解决方法:
方法一:禁用字段的HTML转义(推荐)
直接在Rails Admin的字段配置中关闭HTML转义,同时确保图标HTML字符串被标记为安全内容:
1. 更新模型中的available_icons方法
def self.available_icons [ ['<i class="fa fa-glass" aria-hidden="true"></i>'.html_safe, "fa-glass"], ['<i class="fa fa-music"></i>'.html_safe, "fa-music"], ['<i class="fa fa-search"></i>'.html_safe, "fa-search"] ] end
2. 修改Rails Admin的字段定义
field :icon, :enum do enum do Navitem.available_icons end html_escape false # 关键配置:禁止转义选项标签的HTML内容 end
html_escape false会告诉Rails Admin不要处理选项中的HTML,再配合html_safe标记,就能让图标直接渲染出来。
方法二:自定义选项的HTML渲染
如果第一种方法因为Rails Admin版本问题不生效,可以手动重写字段的选项渲染逻辑,直接生成未转义的HTML:
field :icon, :enum do enum do Navitem.available_icons end def enum_option_html(option) # 直接构建<option>标签,绕过默认转义逻辑 "<option value='#{option[1]}' #{'selected' if option[1] == value}>#{option[0]}</option>".html_safe end end
这个方法完全自定义了选项的HTML生成,确保图标代码被正确解析。
最后别忘了确认项目已经正确引入Font Awesome的CSS文件,否则图标还是无法正常显示哦~
内容的提问来源于stack exchange,提问作者Markus Andreas
相关产品推荐
相关产品推荐

