2012-02-10 33 views
0

(我沒有拼貼模型,這可能是問題嗎?)我美麗的形式(HAML,Rails,Formtastique,Mongoid)有什麼問題?

我試圖在HAML,Rails和Mongoid中創建一個表單,我無法得到每個字段的命名權。

拼貼畫是一組15個作品,作品有一個名爲「slide_number」的列,如果它們在拼貼中,則爲幻燈片編號,如果不是,則爲零。

這是(在_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之後的第一個屬性是應該做什麼的。

+0

如果你想基於拼貼的形式會更容易有一個拼貼模式。 – zeeraw 2012-02-14 12:55:57

回答