0

私はこれに1日以上携わっていますが、誰かが私を助けてくれることを願っています。私はruby/railsに不慣れで、近づいていると思います。

私は見解を持っていますが、有効になっている場合は、ユニット番号、料金などのアパートに関する基本的な情報を入力できます。次に、作成するアパートメントの数を入力できます。この情報はセッション変数に配置され、プレビューフォームが表示されます。したがって、たとえば、作成するアパートの数に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

私はまだ実際にsaveメソッドを作成していません。私が持っているものを出します。ある時点では、最後に入力されたレコードのみが保存されますが、現時点ではすべて間違っていることはわかっています。

/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"}

したがって、プレビューメソッドで@mktg_apartmentの配列を設定しているのに、プレビュービューで正しくアクセスされていないようです。実際には、save_preview postメソッドに期待するように、プレビュービューがパラメーターを渡しているように見えます。

助けてください、私は壁に頭を打ちつけています。ありがとうございました...

4

1 に答える 1

1

ネストされたフォームを使用します。ユニットを別のモデルに分割し、土地のブロック (ブロック) のようなものに多くのユニットを持たせます。次に、複雑なフォームを使用してすべての情報を入力できます。

参照: http://railscasts.com/episodes/196-nested-model-form-part-1

ブロックモデルはブロック全体のサイズを保持でき、ユニットモデルは特定のユニットに関する詳細を保持できます。

于 2012-04-11T02:03:05.323 に答える