我已經在這一天了一天了,我希望有人能幫助我。我是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方法。
任何幫助,我打我的頭靠在牆上。謝謝...
好吧,做一些事情就像創建一個建築模型,它可以容納任何有關該建築物的信息,然後建造has_many公寓。這真的是我唯一的選擇,還是最簡單的方法?還有更多我認爲你是對的。謝謝! – 2012-04-11 02:35:17
這是最簡單和最好的做事方式。記住,如果模型太難了,那麼你很可能不得不將它分成不同的模型。 – map7 2012-04-11 03:56:48