0

このエラーを修正するにはどうすればよいですか? コントローラーを DRY したいのですが、各メソッドで params[] の健全性チェックを実行し、すべてのパラメーターが存在することを確認します。

問題は、ラムダの戻りにあります。定義されているとおり

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. スプラット演算子 ("*") を使用して、不明な数のパラメーターを配列に取得できます

  2. インデックス (場所) の代わりに ("any?") メソッドを使用できます

  3. 配列内の各項目に対してのみ関数呼び出しを行う場合は、シンボルを使用して proc (「&:」) を使用できます。

  4. json をレンダリングする場合は to_json を呼び出す必要はありません

  5. シンボルをハッシュ キーとして使用することをお勧めします (":error")

  6. true/false を返して、すべてが問題ないかどうかを示します。false の場合は、アクションから戻るだけです

于 2013-05-09T14:05:58.893 に答える