我收到了这个错误。
“没有将哈希隐式转换为字符串”
这是我的.rb文件。任何人都可以建议我解决方案。
def themify_colors
if Store.Configurations['themify_colors'].present?
@themify_colors = JSON.parse(Store.Configurations['themify_colors'])
end
end
答案 0 :(得分:0)
JSON.parse只接受字符串作为参数,默认情况下返回哈希。但是在你的情况下你已经传递了Hash,这就是为什么JSON.parse会抛出错误。
http://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html
def themify_colors
@themify_colors = Store.Configurations['themify_colors']
@themify_colors = JSON.parse(@themify_colors) unless @themify_colors.is_a?(Hash)
end
答案 1 :(得分:0)
您应该添加一个条件以避免重新分配变量,并在尝试解析变量之前检查Store.Configurations['themify_colors']
是否为字符串。
def themify_colors
unless @themify_colors
config = Store.Configurations['themify_colors']
@themify_colors = config.is_a?(String) ? JSON.parse(config) : config
end
@themify_colors
end
即便如此,它仍然不完美,是重构的主要内容。解析配置更有可能在应用程序的初始化中完成 - 而不是在使用该值的getter中。