2012-04-11 1 views
0

나는 하루 동안이 작업을 해왔으며 누군가가 나를 도울 수 있기를 바랍니다. 나는 루비/레일을 처음 접했고 나는 가까워지고 있다고 생각한다.레일즈 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의 배열이 내 미리보기에서 올바르게 액세스되지 않습니다. 사실 내 미리보기는 save_preview post 메서드에서 예상하는대로 매개 변수를 전달하는 것처럼 보입니다.

어떤 도움을 주시겠습니까. 저는 벽에 머리를 때리고 있습니다. 감사합니다 ...

답변

1

중첩 된 양식을 사용합니다. 단위를 별도의 모델로 분할하고 토지 (블록)와 같은 블록에 많은 단위가 있어야합니다. 그런 다음 복잡한 양식을 사용하여 모든 정보를 입력 할 수 있습니다.

는 참조 : http://railscasts.com/episodes/196-nested-model-form-part-1

블록 모델 특정 유닛에 대한 사항을 저장할 수있는 전체 블록의 크기 및 장치 모델을 보유 할 수있다.

+0

좋아요. 그렇다면 건물 모델에 대한 정보를 담고있는 건물 모델을 만든 다음 건물 has_many 아파트를 만드는 것과 같은 작업을 수행하십시오. 그게 내 유일한 것인가 아니면이 일을하는 가장 간단한 방법일까요? 더 이상 나는 당신이 옳다고 생각합니다. 고맙습니다! –

+0

이것은 일을하는 가장 단순하고 모범 사례입니다. 모델링하기가 너무 어렵다면 분리 된 모델로 분할해야 할 가능성이 높습니다. – map7

관련 문제