0

레일 3.1.0 응용 프로그램에는 rfq, quote 및 test_item이 있습니다. RFQ에는 많은 견적과 테스트 항목이 있습니다. 견적은 rfq에 속하며 많은 테스트 항목이 있습니다. 테스트 항목에는 많은 rfq와 따옴표가 있습니다.레일 3.1.0에 연결된 레코드의 이름 만 표시하는 방법

견적을 만들 때 rfq의 테스트 항목이 견적 새로운 양식으로 직접 전달됩니다.

<%= simple_form_for([@rfq, @quote]) do |f| %>  
....   
    <% @quote.test_items.each do |t| %> 
    <p><%= f.association :test_items, :label => false %><%= link_to_remove_fields "remove", f %></p> 
    <% end %> 
.... 
<% end %> 

뷰 코드는 위의를 표시 할 수 있습니다 : 여기

@quote = @rfq.quotes.new() 
    @quote.test_items << @rfq.test_items 

RFQ를에서 전달 된 시험 항목을 표시하기위한 견적을 새로운 형태로보기 코드입니다 : 여기에 인용 컨트롤러의 새로운의 코드는 테스트 항목은 rfq에서 전달 및 협회 (견적은 많은 테스트 항목이 있습니다) 어떤 애플 리케이션이 필요합니다 유지합니다. 그러나 여기에는 필요하지 않은 테스트 항목에 대한 선택 상자가 표시됩니다 (테스트 항목을 삭제 이외의 다른 견적으로 변경할 수 없으며 루프의 t도 유용하지 않습니다). 필요한 것은 테스트 항목의 이름을 표시하고 연관을 유지하며 (견적에는 많은 테스트 항목이 있음) 테스트 항목을 삭제할 수 있습니다 (link_to_remove_fields에서 완료).

이것을 수행하기위한 명확한 방법이 있습니까? 정말 고마워.

답변

1

레일스에서 ​​중첩 된 속성 메커니즘을 살펴보십시오. 그것은 모델 선언 인 accepts_nested_attributes_for을 필요로하며 simple_form의 simple_fields_for와 호환되는 fields_for 폼 헬퍼가 지원합니다.

test_items을 명시 적으로 반복하고 양식을 알려주는 f.assocation을 호출하면 다른 test_item을 선택하려는 오류가 있다고 생각합니다. 당신이하려는 것은 사용자가 test_items 체크 박스를 제거하도록하는 것입니다. fields_for를 사용하여 암시 적으로 test_items의 목록을 반복하고 삭제를 허용하려면 nested_attributes를 사용해야합니다.

+0

연결하기 전에 simple_fields_for를 사용하려고했는데 아무 래도 제대로 이해하지 못했습니다. – user938363

+0

@ user938363 시도한 코드를 게시 할 수 있습니까? –

관련 문제