Ruby如何修改参数

时间:2016-06-28 07:38:51

标签: ruby-on-rails ruby pass-by-reference pass-by-value

所以我有这个代码,我的目标是将任何空字符串转换为null

def convert_empty_strings_to_null
  if request.patch? || request.post?
    convert_empty_strings_to_null_rec(request.params)
  end
end

def convert_empty_strings_to_null_rec(param)
  param = nil if param.empty? if param.is_a?(String)
  param.all?{|v| convert_empty_strings_to_null_rec v} if param.is_a?(Array)
  param.all?{|k,v| convert_empty_strings_to_null_rec v} if param.is_a?(Hash)
end

但我是ruby on rails的新手,我发现它按值而不是通过引用发送params,因此没有更改params,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

首先,这就是你的<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="signin"> <div class="dialog"> <div class="content"> <div class="header"> <h4>Title</h4> </div> </div> </div> </div> <div id="phone"> <div class="dialog"> <div class="content"> <div class="header"> <h4>Title</h4> </div> </div> </div> </div>方法应该如何保持更改的持久性:

convert_empty_strings_to_null_rec

此外,我从您的问题中假设def convert_empty_strings_to_null_rec(param) if param == "" updated_param == nil elsif param.is_a?(Array) updated_param == param.map{|x| nil if x.empty? } elsif param.is_a?(Hash) updated_param = {} param.each do |k, v| if v.empty? updated_param[k] = nil else updated_param[k] = v end end end return updated_param end 是一种行动方法。应该更新它以捕获返回的convert_empty_strings_to_null方法。

convert_empty_strings_to_null_rec

希望有所帮助:)

答案 1 :(得分:3)

我认为通过&#34;空&#34;你的意思是零 - 用字符串,这意味着只包含空格的字符串应保持不变。 (否则let calendar = NSCalendar.currentCalendar() calendar.timeZone = NSTimeZone(name: "GMT")! let date = calendar.dateFromComponents(components) blank?将是您的朋友。)

strip