2014-10-13 3 views
1

저는 Rails를 처음 사용합니다. 작은 응용 프로그램을 만들려고합니다. 4 개의 Order, Room, Item 및 Inventory 모델이 있습니다.Ruby on Rails : 모델의 여러 항목을 선택하여 새 테이블에 삽입하십시오.

사용자에게 항목 목록을 보여주고 싶습니다 (데이터베이스에 이미 있음). 현명한 방. 사용자는 해당 목록의 수량과 함께 항목을 선택할 수 있습니다. 선택이 완료되면 선택한 항목을 인벤토리 테이블에 저장해야합니다.

인벤토리 테이블에는 item_id, order_id 및 수량이 있습니다.

계속 진행하면 모든 객실이 완료 될 때까지 다른 방의 항목 등이 표시됩니다.

나는 어떻게 진행 해야할지이 시점에서 고민하고있다.

위 페이지의 내보기 파일은 수량에 따라 선택한 모든 항목을 인식하고 한 번에 모든 레코드를 작성의 레일 방법이 있나요이

<div class="row"> 
    <h6>Living Room</h6> 
</div> 
<% @items.each do |item| %> 
    <p "name1"><%= item.name.capitalize %> </p> 
<% end %> 
<a href="#" >Next Room</a> 

처럼 보인다?

+0

보기가 양식처럼 구성되어 있습니까? 그것은 그렇게 보이지 않습니다. – irosenb

+0

지금은 그렇지 않습니다. 양식으로 구조화하고 싶지만 할 수 없습니다 (양식의 동작 결정). 만약 내가 한번에 인벤토리 테이블의 모든 항목 (order_id 및 item_id에 대한 숨겨진 필드 삽입)을 만들 수있는 그런 식으로 구조 수 있다면 그게 나에게 가장 좋습니다. – Kranthi

+0

POST로 배열을 보내고 싶다면'itemquantity []'와 같은 이름을 사용해야합니다 ... 같은 이름의 객체를 여러 개 보내는 경우, 마지막 객체 만 제출됩니다. –

답변

1

항목의 배열을 만드는 것은 좋은 해결책이 될 것입니다 : 컨트롤러 액션에서 다음

<% @items.each do |item| %> 
    ... 
    = text_field_tag "item[#{item.id}]", value: 0 
    ... 
<% end %> 

:

def update 
    params[:item].each do |item_id, quantity| 
    next if quantity == 0 
    inventory = Inventory.find_or_initialize_by(item_id: item_id, order_id: current_order.id) 
    inventory.quantity = quantity 
    inventory.save 
    end 
end 

난 당신이에서 주문 ID를 얻을 곳도 확실하지 않다, 그래서 그냥 current_order 방법이 있다고 가정합니다.

+0

안녕하세요, 저는 레일을 조금 초보했습니다. 그 대답을 기다리시겠습니까? 내보기 코드는 양식으로 구성되어야하며 작업은 항목 컨트롤러의 업데이트 방법입니까? – Kranthi

+0

나는 당신이 의미하는 바를 이해했다고 생각합니다. 코드에 몇 가지 변경을 가하고 작동하는 것처럼 보입니다. 고마워. – Kranthi

+0

나는 위의 질문과 관련하여 또 다른 문제에 직면하고있다. 나는 그 질문을 편집했다. 저 또한 저를 도울 수 있겠습니까? – Kranthi