干:尽量减少代码

时间:2014-06-30 02:47:55

标签: 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['daily_calendar'] = search
puts custom_params.to_json

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

4 个答案:

答案 0 :(得分:2)

按原样写:

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

答案 1 :(得分:1)

您可以使用散列文字:

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

答案 2 :(得分:1)

{daily_calendar: {search: {print_date: @week_day}}}.to_json

答案 3 :(得分:1)

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

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"}}}}