我有一个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
答案 0 :(得分:2)
您需要从您的方法中删除return
语句,Ruby使用隐式返回(请参见https://jtrudell.github.io/blog/ruby_return_values/),因此block
的结果是该语句中最后评估的行块,您的代码中的return语句将被视为return
方法中的values
。您的方法应类似于:
def values
@metric = metrics.select do |metric|
metric['href'].split('/').last == params[:id]
end
end