Ruby DRY:最小化代码

Ruby DRY:最小化代码,ruby,json,hash,Ruby,Json,Hash,我需要一个方法在许多地方创建以下json字符串: {"daily_calendar":{"search":{"print_date":"2014-06-30"}}} 我有以下四行代码来生成哈希: custom_params, print_date, search = Hash.new, Hash.new, Hash.new print_date['print_date'] = @week_day search['search'] = print_date custom_params['dai

我需要一个方法在许多地方创建以下json字符串:

{"daily_calendar":{"search":{"print_date":"2014-06-30"}}}
我有以下四行代码来生成哈希:

custom_params, print_date, search = Hash.new, Hash.new, Hash.new
print_date['print_date'] =  @week_day
search['search'] = print_date
custom_params['daily_calendar'] = search
puts custom_params.to_json

在一行或两行中执行此操作并在控制器中的任何位置使用它的最佳方法是什么?

您可以使用哈希文本:

custom_params = {
    "daily_calendar" => {
        "search" => {
            "print_date" => @week_day
        }
    }
}

您可以使用哈希文本:

custom_params = {
    "daily_calendar" => {
        "search" => {
            "print_date" => @week_day
        }
    }
}
照原样写:

hash = {daily_calendar: {search: {print_date:@week_day} } }
puts hash.to_json
照原样写:

hash = {daily_calendar: {search: {print_date:@week_day} } }
puts hash.to_json

递归表达式允许您拥有任意数量的嵌套哈希:

def doit(*h,v)
  h.size == 1 ? { h.first => v } : { h.shift => doit(*h,v) }
end

h = %w[one_more_level daily_calendar search print_date]
doit(*h, 'tue')     
  #=> {"one_more_level"=>{"daily_calendar"=>{"search"=>{"print_date"=>"tue"}}}}

递归表达式允许您拥有任意数量的嵌套哈希:

def doit(*h,v)
  h.size == 1 ? { h.first => v } : { h.shift => doit(*h,v) }
end

h = %w[one_more_level daily_calendar search print_date]
doit(*h, 'tue')     
  #=> {"one_more_level"=>{"daily_calendar"=>{"search"=>{"print_date"=>"tue"}}}}

什么是匆忙选择答案?什么是匆忙选择答案?