私はこれを1日以上実行しています。誰かが私を助けてくれることを願っています。私はルビー/レールが新しく、近いと思う。Rails 3では、単一のモデルとメソッドから複数のレコードエントリを作成します
アパートについての基本情報(ユニット番号、料金など)を入力できるのに対して、これは有効です。作成するアパートメントの数を入力することができます。この情報はセッション変数に格納され、プレビューフォームが表示されます。例えば、あなたが作成したいマンションの数に5を入力した場合、テーブルに5つの行が表示され、それぞれにUnit Number、Rate、Enabledの見出しが付けられます。その後、個々のアパートに必要に応じて変更を加え、[保存]をクリックします。私は本当に私のまだ作成方法を保存していない
/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
。私は何を持っているのかを出しますが、最後に入力したレコードだけを保存することもありますが、この時点ですべてが間違っていることがわかります。私preview.html.hamlフォームで
/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
私は@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の配列にプレビュービューで正しくアクセスできません。私のpreview_viewは、save_previewのpostメソッドに期待していたように、パラメータを渡しているようです。
助けてください、私は壁に頭を打っています。ありがとうございました...
[OK]をクリックすると、その建物に関する情報を保持する建物モデルを作成し、次にhas_manyアパートメントを作成するような操作を行います。それは本当に私の唯一のここに、またはこれを行うための最も簡単な方法ですか?あなたが正しいと思うほど、私はそれについてもっと考えます。ありがとうございました! –
これは最も簡単で実践的な方法です。モデリングが難しい場合は、別のモデルに分割する必要があります。 – map7