array.select не повторяет каждый элемент - PullRequest
0 голосов
/ 20 мая 2019

У меня есть контроллер rails, и этот код только перебирает первый элемент в массиве metrics? Почему это так?

# /metrics/:id
def values
  @metric = metrics.select do |metric|
    id = metric['href'].split('/').last
    p "id == params[:id] = #{id == params[:id]}" # false on the first iteration (but never gets to the next iteration
    return id == params[:id]
  end
  p "HERE?" # We never get here!
end

1 Ответ

2 голосов
/ 20 мая 2019

Вам необходимо удалить оператор return из вашего метода, Ruby использует неявный возврат (см. https://jtrudell.github.io/blog/ruby_return_values/),, поэтому результатом block является последняя строка, которая оценивается в этом блоке, оператор возвратав вашем коде трактуется как return из метода * 1006. * Ваш метод должен выглядеть примерно так:

def values
  @metric = metrics.select do |metric|
    metric['href'].split('/').last == params[:id]
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...