2010-09-07 3 views
0

В рельсах вы можете использовать .each do || для прокрутки возвращаемых результатов запроса. Но что, если возвращается только одна строка? или у вас есть возможность 0, 1 или много? как вы справляетесь с этими сценариями, не вызывая ошибки?рельсы, обрабатывающие одиночные и множественные возвращенные объекты

Такая ситуация, в частности, один, где я принимать вложенные атрибуты следующие railcast блога Райана (http://railscasts.com/episodes/196-nested-model-form-part-1)

я могу иметь 1 или несколько вложенных элементов, возвращаемых который я тогда нужно перебрать и написать форму XML.

ответ

1

Когда вы перебираете набор результатов с помощью #each, вам не нужно беспокоиться о том, сколько результатов было возвращено. Если ноль, в вашем массиве не будет никаких элементов для перехода к циклу; если один, только один. Если больше, то каждый передается в цикл. В каждом случае, если вы просто зацикливаете массив, не имеет значения, пуст ли массив или имеет ли он тысячу элементов, тот же код цикла будет работать без ошибок.

Посредством примера, могу цикл по массивам с разным числом элементов без какого-либо вопроса:

ree-1.8.7-2010.02 > [].each {|e| puts e } 
=> [] 
ree-1.8.7-2010.02 > [1].each {|e| puts e } 
1 
=> [1] 
ree-1.8.7-2010.02 > [1,2,3].each {|e| puts e } 
1 
2 
3 
=> [1, 2, 3]