How to replace nil and 'empty string' with “None” in Ruby/Rails in enumerable object?
我要使用Rails中的对象:一个Record :: ActiveRecord_Relation和一个ActionController :: Parameters,并将它们转换为可用的哈希,以在视图中呈现。我需要将nil和"替换为" none"。我可以通过非干燥方式来实现,并用类似以下方式保护哈希的每个键/值对:
1 | <%= @records_incoming[:time_inserted] || @records_incoming[:time_inserted].empty? ?"none" : @records_incoming[:time_inserted] %> |
,但是看起来不像Ruby(准,我是新开发人员)。
我试图像这样在控制器中处理此问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def show sent_results = Record.get_sent(params[:request][:trans_uuid]) if !sent_results.empty? incoming_request = params[:request].permit! @records_sent = sent_results[0].attributes.each { |k,v| v.class == String && v.empty? || !v ? sent_results[0].attributes[k] ="none" : sent_results[0].attributes[k] } @records_incoming = incoming_request.to_h.map { |k, v| v.empty? || !v ?"none" : v } byebug else flash[:error] = 'No record found' end end |
,但这不会将nil和空字符串值更改为'none'。如果我使用
请为总体上所有更好的Rails方法提供建议。尝试将2个散列放入视图中以进行拆分和渲染。
您可以尝试使用
1 | <%= @records_incoming[:time_inserted].presence ||"none" %> |
它处理您需要的两种情况,
您可以在参数哈希上使用
尝试,
1 2 | incoming_request.transform_values! { |v| v.empty? || !v ?"none" : v } @records_incoming = incoming_request |
参考:transform_values! doc
注意: