Что не так с моей красивой формой (HAML, Rails, Formtastique, Mongoid)? - PullRequest
0 голосов
/ 10 февраля 2012

(у меня нет модели коллажа, может ли это быть проблемой?)

Я пытаюсь создать форму в 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.

1 Ответ

0 голосов
/ 14 февраля 2012

Вы не можете сделать форму таким образом без модели, но это должно помочь вам преодолеть это.

Есть ли способ создать форму с помощью formtastic без модели?

...