(у меня нет модели коллажа, может ли это быть проблемой?)
Я пытаюсь создать форму в HAML, Rails и Mongoid и не могу правильно назвать каждое поле.
Коллаж - это группа из 15 Works, Works имеют столбец с именем «slide_number», который является либо номером слайда, если он находится в коллаже, либо nil, если его нет.
Это строка (в _form.html.haml), которая доставляет мне неприятности:
= f.input "slide_"+(index+1).to_s, :collection => Work.all.map{|w| [w.name, w._id]}
Если я выполняю следующую строку, форма отображается, но все выпадающие списки помечаются как «Один», и когда я отправляю форму, я получаю информацию только из последней формы (потому что все названо одинаково).
= f.input :one, :collection => Work.all.map{|w| [w.name, w._id]}
collage_controller.rb
def edit
@collage = Work.excludes(:slide_number => nil).order_by([:slide_number, :asc])
@work = Work.all.order_by([:slide_number, :asc])
slides = Array.new
15.times do |index|
if Work.where(:slide_number => index+1).first
slides << Work.where(:slide_number => index+1).first.id
else
slides << nil
end
@slides= slides
end
end
_form.html.haml
= semantic_form_for :collage do |f|
- @slides.each_with_index do |slide, index|
= f.input "slide_"+(index+1).to_s, :collection => Work.all.map{|w| [w.name, w._id]}
.actions
= f.commit_button
Это ошибка, которую я получаю:
NoMethodError in Collage#edit
Showing /Users/nickgoddard/codebase/subrosa/app/views/collage/_form.html.haml where line #7 raised:
undefined method `slide_1' for []:Array
Любая помощь высоко ценится. Я не совсем понимаю, что должен или должен делать первый атрибут после f.input.