2016-08-16 1 views
0

프로그래밍 초보자이며 Remission 개체를 만들기 위해 복잡한 양식 (나에게)에 문제가 있습니다. 이 사안은 has_many Units입니다. 이 작업 양식 버전이 있지만 그것을 향상시키고 싶습니다. 나의 실제 버전에서는 모든 유닛 (Unit.all)의 목록에서 체크 박스를 통해 릴리 션에서 원하는 단위를 선택해야합니다. 그것은 잘 작동하지만 문제는 유닛이 일괄 적으로 생성되어 각 유닛 유형의 사본이 여러 개 있다는 점입니다. 지금 내가하려는 것은 각기 다른 유형의 단위 만 보여주는 것입니다. 각 단위 유형은 고유 product_code 그래서 난을 통해이 작업을 수행 옴이 있습니다몇 가지 값을 반환하도록 레일 폼에서 select_tag를 변경하고 개선하는 방법

@units = Unit.where(sold:false).group(:product_code) 

이제 내 문제는 내가 나를 추가 할 각 유형의 단위의 양을 선택할 수있는 select_tagcheckbox_tag을 변경하려는 것입니다 그들을 죄 사함에 이른다. 이 선택 태그는 0에서 각 단위 유형에 대한 단위 수량이어야합니다. 나는 이것에 대한 아이디어를 가지고 있지만 완료하는 데 내가 관리 할 수있는 몇 가지 수정이 필요합니다

<% @units.each do |unit| %> 
    </td> 
    <%= select_tag "quantities[]",options_for_select(0..Unit.where(product_code: unit.product_code).count) %> 
    </td> 
<% end %> 

가 도움이 내게는 product_code의와 관련된 선택된 양의 값을 반환하는 방식으로이 문제를 해결할 수 유닛 유형이므로 컨트롤러에 remission을 생성하기 위해 해당 정보를 사용할 수 있습니다. 배우는대로 모든 제안을 환영합니다.

미리 감사드립니다.

+0

안녕과 스택 오버플로에 오신 것을 환영합니다. 코드에 대한 구두 설명을 디버깅하는 것은 매우 어렵습니다. 질문을 편집하고 (예 : 선택 상자와 같은) 도움이 필요한 관련 섹션을 추가 할 수 있습니까? (예 : 선택 상자) 화를내는 모든 시도 (작동하지 않는 경우에도) 및 다양한 접근 방법을 시도 할 때 발생한 오류를 포함 할 수 있습니까? 그렇게하면 우리는 당신이 무엇을하려고하는지 정확히 볼 수 있습니다. 그럼 우리는 당신을 도울 수 있습니다 :) 참고 : 형식화가 끔찍하기 때문에 주석에 코드를 넣지 마십시오 (예 : 여기). 확실히 새로운 코드를 추가하기 위해 질문을 편집하십시오 :) –

+0

하하 - 입력하는 동안 편집 : D 여전히 - 더 좋다! 정수를 선택하도록 하시겠습니까? –

+1

감사! 내가 집으로 돌아가는 동안 나는 그것을 편집 할 것이다. 예. 수량은 정수가 될 필요가 있습니다. 단위 객체의 수는 remitting_id를 통해 remission_id에 추가 될 단위 객체의 수에 해당하므로 추가해야합니다. –

답변

1

드롭 다운에서 숫자의 집합을 구축하려면 - 당신은 그냥 놓아 그것을 할 수있을 것처럼 보이는 options_for_select 예 :

<%= select_tag "quantities", 0..Unit.where(product_code: unit.product_code.count %> 

하지만 당신은 모두에 대해 동일한 필드 이름을 사용하는 경우 드롭 다운을 선택하면 양식 당 하나의 결과 만 반환됩니다. 마지막 결과는 이전 양식을 덮어 씁니다. 그래서 그때는 아마 PARAMS이 뭔가를 얻을 것이다 단위 예를 들어

<% @units.each do |unit| %> 
    <td> 
    <%= select_tag "quantities[#{unit.product_code}]", 0..Unit.where(product_code: unit.product_code %> 
    </td> 
<% end %> 

를 사용하여 고유 한 필드 이름을 부여해야합니다

params[:quantities] 
=> {'abc123' => 4, 'def456' => 1} 
+0

답변 해 주셔서 감사합니다. 나 혼자서 프로그래밍하는 법을 배우고 있으며 문서가 너무 추상적 인 것처럼 보입니다. 코드 <% = select_tag "수량 [# {unit.product_code}]", options_for_select (0..Unit.where (product_code : unit.product_code) .count) %>. 나는 당신이 나를 도울 수 있기를 희망하면서 남은 질문 하나만 남았습니다. 이제 내가 선택한 코드와 수량으로 해쉬를 얻었습니다. 문제는 또한 'code'=> 0 인 값을 가진 모든 값을 포함하고 있으며, 0을 수량으로 남겨 둡니다. 내가 선택한 변경 사항을 가져 오기위한 빠른 수정이 있습니까? –

+1

그런데 마지막 부분에서 카운트가없는 코드를 사용하면 오류가 발생하지 않습니다. –

+0

생성 된 hast를 params [: 수량] .delete_if {| k, v | v == "0"} 어떤 의미입니까? –

관련 문제