Я вывожу коллекцию в хамл
#- if @fields.count>0
.sfields
#= render :partial=>"sfields/field", :collection=>@fields, :as=>:field
= render @fields
При наличии нулевых полей всегда отображается одно фантомное поле. Когда я добавляю 'if @ fields.count> 0', тогда, когда есть ноль, нет вывода, но как только я добавляю одно поле, я получаю два рендеринга, одно добавленное мной и фантомное поле.
Это первое, с чем я столкнулся, и я не уверен, что то, что я сделал, вывело фантомное поле. Я помню, что видел что-то подобное, но не могу вспомнить, где я это видел, и мой поиск ничего не дал. АТМ.
РЕДАКТИРОВАТЬ 1:
Содержание частичного
.sfield
= field.name
.fielditems
#- fields.items each do |i|
#= render :partial=>"items/item", :locals=>{:i => i}
= render field.items
Итак, вокруг всегда висит дополнительное поле.
РЕДАКТИРОВАТЬ 2
Абстрактно, у меня есть это:
Показать действие -> частичное для полей -> частичное для элементов поля -> частичное для выбора элементов поля, 4 разных места на одной странице.
Таким образом, fields - это набор элементов, а item - набор вариантов. Даже после прохождения рендеринга рельсов по умолчанию (например, render @fields, render field.items и т. Д.) У меня все еще есть это фантомное поле. Я не хочу скрывать это с помощью js или чего-то еще (очень ужасно), поэтому мне нужно найти какое-то решение, которое влечет за собой больше проб и ошибок и чтения.
Работает, но безобразно с висящим фантомным полем.
РЕДАКТИРОВАТЬ 3
Я сделал несколько шагов назад, объединил все в один шаблон, без партиалов. Все еще там. Что-то основное, что я делаю неправильно или отсутствует, добавляет это фантомное поле, так что раздражает. Тогда это не обязательно частичные вопросы.
РЕДАКТИРОВАТЬ 4: решено
уточнил @fields select в контроллере, чтобы выбрать только поля, прикрепленные к элементу, который я показываю
* * +1032 например,
@ fields = @ показывая.fields
до
@ fields = @ Showing.fields (: show_id => @ Showing.id)
Я все еще хотел бы знать, почему он делал это grr ...