2011-02-04 3 views
0

중첩 된 두 가지 양식을 작성하려고합니다. 하지만 지금까지 발견 한 모든 자료는 기본 객체를 저장하는 방법, 중첩 된 객체를 추가하거나 제거하는 방법을 다루지 만 양식의 값으로 전체 목록을 저장하지는 않습니다. 이것을 할 수있는 방법이 있습니까?모든 중첩 된 양식 개체를 한 번에 저장

다음은 내가 함께 작업하고있는 모델입니다. 다른 구성 요소와 수량을 선택할 수있게 해주는 PC 구성 프로그램을 만들려고합니다. 그런 다음 바구니에 추가 할 것입니다.

그래서 저는 세 가지 모델로 작업하고 있습니다. Configuration, Configoption, Item.

가 이

- 구성 모델

has_many :configoptions 

- Configoption 모델

belongs_to :configuration 
    has_many :items 

    def range 
    a = [] 
    b = self.quantity_rng.scan(/\w/) 
    b.each do |p| 
     a << p.to_i 
    end 
    return a 
    end 

-

belongs_to :configoption 
    scope :sorted, order('items.position ASC') 

아이디어는 모든 구성 옵션 세트를 가지고, 항목 모델 말을한다 5.이 5 가지 옵션 각각에 대해 가능한 많은 항목이있을 수 있습니다. 예를 들어 옵션 1은 프로세서, 2는 RAM 등이 될 수 있습니다.

- 컨트롤러

def list 
    @configurations = Configuration.find(:all) 
    end 

    def show 
    @configuration = Configuration.find(params[:id]) 
    @options = @configuration.configoptions 
    end 

구성 -

<table> 
<tr> 
    <th>Elements</th> 
    <th>Quantity</th> 
</tr> 

    <%= form_for(:configuration, :remote => true) do |p| %> 
     <% @options.each do |option| %> 
     <tr> 
     <%= form_for(:option, :remote => true) do |f| %> 
      <% if option.items.count > 1 %> 
      <th id="<%= option.name %>"> <%= f.select option.name, options_from_collection_for_select(option.items.sorted, 'id', 'name')%></th> 
      <% else%> 
      <th id="<%= option.name %>"> <%= f.label(option.items[0].name) %></th> 
      <% end %> 
      <% if option.quantity_rng == nil %> 
      <th id="<%= option.name + "_qty" %>"> <%= f.label(option.quantity) %></th> 
      <% else%> 
      <th id="<%= option.name %>"> <%= f.select option.name, option.range, :selected => option.quantity%></th> 
      <% end %> 
     <% end %> 
     <% end %> 
    </tr> 
    <% end %> 

</table> 

지금까지 일들이 실제로 좋은 구성/쇼보기, 내가 옵션과 .range 방법으로 다른 항목을 줄 수는의를 저를 보자 "1,2,3"옵션에서 quantity_rng라고 말하고 필요할 경우 드롭 다운을 위해 전달 된 배열 [1,2,3]에 저장합니다.

하지만 이제는 내가 선택한 것을 실제로 바구니에 추가하는 중요한 부분이 있습니다. 사용자가 드롭 다운에서 조작 한 내용을 캡처하고 저장합니까 (configoptions 자체가 아니라 다른 곳에있는 새 객체로 저장합니까?)

BTW 나는 remote => true을 사용하고 있습니다. jQuery의 유효성 검사 규칙은 나중에 한 번에 하나씩)

감사합니다.

답변

관련 문제