0

我该如何解决这个错误?我想干燥我的控制器,并且在每种方法中我都对 params[] 执行完整性检查,只要确保所有参数都存在。

问题在于 lambda 的回报。正如它所定义的

def validate_input(parameters)
    return proc {
        if parameters.find_index { |i| i.nil? }
          error_message = {'Error' => 'Please fix some params'}.to_json
          render :json => error_message and return
        end
    }
  end

然后,在我的控制器操作中,我执行以下操作:

def action
  ...
  validate_input([my_sane_id, my_other_param]).call
  ...
end

并得到错误:意外返回。

4

1 回答 1

2
def validate_input(*parameters)
  if parameters.any?(&:nil?)
     render :json => { :error => 'Please fix some params' }
     false
  else
     true
  end
end


def action
  ...
  return unless validate_input(my_sane_id, my_other_param)
  ...
end
  1. 您可以使用 splat 运算符 ("*") 将未知数量的参数放入数组

  2. 您可以使用 ("any?") 方法代替索引(即位置)

  3. 如果您只对数组中的每个项目进行函数调用,则可以使用符号来处理(“&:”)

  4. 如果渲染 json,则不需要调用 to_json

  5. 更好地使用符号作为哈希键(“:错误”)

  6. 您返回真/假以指示一切是否正常,如果为假,则从操作中返回

于 2013-05-09T14:05:58.893 回答