2012-04-11 85 views
0

我已經在這一天了一天了,我希望有人能幫助我。我是ruby/rails的新手,我想我正在接近。Rails 3從單一模型和方法創建多個記錄條目

我有一個看法,而您可以輸入有關公寓的基本信息,如單位數量,費率(如果已啓用)。然後,您可以輸入您想要創建的公寓數量。這些信息被放置到會話變量中,並顯示一個預覽窗體。例如,如果您輸入了5個想要創建的公寓數量,則會在表格中獲得5行,每個行的單元號,速率和已啓用標題。然後,您可以根據需要對任何單獨的公寓進行修改,然後單擊保存。

/app/models/apartment.rb

def preview 
    @count = session['count'].to_i 
    @mktg_apartment = [] 
    1.upto(@count) do |i| 
    @mktg_apartment[i] = Apartment.new 
    @mktg_apartment[i].rate = session['tmp_rate'] 
    @mktg_apartment[i].enabled = true 
    end 
end 

/app/views/preview.html.haml

=form_for @mktg_apartment, :url => {:action => 'save_preview', :method => 'post'} do 
    - 1.upto(@count) do |x| 
    text_field "mktg_apartment[#{x}]", :unit 
    text_field "mktg_apartment[#{x}]", :rate 
    text_field "mktg_apartment[#{x}]", :enabled 

我真的沒有我的拯救方法創建呢。我將拿出我所擁有的東西,一次只能保存最後錄入的記錄,但我知道這一點都是錯誤的。

/app/model/apartment.rb

def save_preview 
    @mktg_apartment = Mktg::Apartment.new(params[:mktg_apartment]) 
    respond_to do |format| 
    if @mktg_apartment.save 
     format.html { redirect_to mktg_apartments_path } 
    else 
     format.html { render action: "preview" } 
    end 
    end 
end 

在我preview.html.haml形式我甩@mktg_apartment,看到以下內容:

[nil, #<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>, 
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>, 
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>, 
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>, 
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>] 

當我打保存它的錯誤了我看到以下參數傳遞到我的信息表格:

{"utf8"=>"✓", 
"authenticity_token"=>"iGLdu/ZmulcLp4xZEU4a4iuxWV1opzNIyXcnZEQCtj8=", 
"mktg_apartment"=>{"1"=>{"unit"=>"", 
"rate"=>"", 
"enabled"=>"0"}, 
"2"=>{"unit"=>"", 
"rate"=>"", 
"enabled"=>"0"}, 
"3"=>{"unit"=>"", 
"rate"=>"", 
"enabled"=>"0"}, 
"4"=>{"unit"=>"", 
"rate"=>"", 
"enabled"=>"0"}, 
"5"=>{"unit"=>"", 
"rate"=>"", 
"enabled"=>"0"}}, 
"commit"=>"Save", 
"method"=>"post"} 

所以它看起來像然而我設置你p我的預覽方法中的@mktg_apartment數組在我的預覽視圖中沒有正確訪問。它實際上看起來像我的預覽視圖傳遞參數,因爲我期望的save_preview post方法。

任何幫助,我打我的頭靠在牆上。謝謝...

回答

1

我會使用嵌套的形式。將這些單元拆分成一個單獨的模型,並且具有像塊(塊)那樣的許多單元。然後你可以使用複雜的形式輸入所有信息。

參見:http://railscasts.com/episodes/196-nested-model-form-part-1

塊模型可容納整個塊的尺寸和單元模型可以容納關於該特定單元的細節。

+0

好吧,做一些事情就像創建一個建築模型,它可以容納任何有關該建築物的信息,然後建造has_many公寓。這真的是我唯一的選擇,還是最簡單的方法?還有更多我認爲你是對的。謝謝! – 2012-04-11 02:35:17

+0

這是最簡單和最好的做事方式。記住,如果模型太難了,那麼你很可能不得不將它分成不同的模型。 – map7 2012-04-11 03:56:48

相關問題