2013-11-25 4 views
0

을 사용하여 제출 단일에서는 여러 기록을 만들어가 작동하는 다음과 같은 형식 : 여기 레일 : 다중 선택 필드

<%= form_for @task do |f| %> 
<%= f.error_messages %> 
<p> 
<%= f.label :name %><br /> 
<%= f.text_field :name %> 
</p> 
<p> 
<%= f.label :color_id %><br /> 
<%= f.text_field :color_id %> 
</p> 
<p><%= f.submit %></p> 
<% end %> 

내 모델입니다 : 내가 실패되었습니다 무엇

class User < ActiveRecord::Base 
has_many :tasks 
end 

class Task < ActiveRecord::Base 
belongs_to :user 
attr_accessible :name, :user_id, :color_id 
end 

class Colors < ActiveRecord::Base 
end 

이 (가)이 변경 중

<%= f.label :color_id %><br /> 
<%= f.text_field :color_id %> 

(복수 선택 가능)

나는이 정직 할 것이라고 생각하지만 난 때이 :

<%= f.select(:color_id, [['Red', '1'], 
['Blue', '2'], 
['Yellow', '3'], 
['Green', '4'], 
['White', '5'] 
],{ :prompt => "Please select"}, 
{ :multiple => true, :size => 5 } 
) %> 

양식은 마우스 오른쪽 보이지만, 그것은 중요하지 않습니다 제출 때 (단식 선택 또는 복수 선택 중 하나를) 선택한 항목 항상 DB의 color_id 셀에 1을 보냅니다. 아무것도 선택하지 않으면 필드가 테이블에서 비어 있습니다.

내가 원하는 것은 color_id 셀에 color_ids를 전송하지만 각 작업 및 관련 색에 대해 별도의 행을 추가한다는 것입니다.

양식을 사용하여 빨간색과 파란색을 선택하면 작업 테이블에 두 개의 행이 있고 color_id를 저장하는 열은 빨간색 ID가 한 행에 있고 파란색 ID가 다른 행에 있습니다.

나는 컬렉션과 다양한 관계 (has_many 등)를 사용해 보았지만 성공하지 못했습니다.

도움을 주시면 감사하겠습니다.

+0

결과가 두 개의 새로운 작업 인 빨간색과 파란색 중 하나 또는 빨간색과 파란색 두 가지 색상과 관련된 작업 중 하나가 될지 확실하지 않습니다. –

+0

color_id가 정수입니까? ID 배열 – fatfrog

답변

0

결과를 예를 들어 'Foo'라는 하나의 작업으로하고 싶다고 가정합니다.이 작업에는 빨간색과 파란색의 두 가지 색상이 있습니다. 이 경우

, 나는 당신이 할 모델을 확장 할 필요가 있다고 생각 :

class Task < ActiveRecord::Base 
belongs_to :user 
has_many :colors 
attr_accessible :name, :user_id, :color_id 
end 

class Colors < ActiveRecord::Base 
belongs_to :task 
end 

는 다음 작업 스키마에서 color_id을 제거하고 색상 스키마에 TASK_ID를 추가합니다.

그런 다음 한 양식에서 여러 색상 값을 만드는 방법에 대해서는 Nested Model Form Part 1을 살펴보십시오.

+0

을 전달하는 문자열이어야합니다. 정확히 찾고자하는 것이지만 - 중첩 된 양식 자습서를 따라 가면 모든 것이 양식과 제대로 작동하는 것처럼 보였지만 제출할 때도 나타났습니다. 아무 데이터도 컬러 모델에 저장되지 않았으며 데이터는 작업 모델에만 저장되었습니다. 또한, 내가 빈 정보 일 것이라고 생각한 것을보기 위해 Tasks # 인덱스에 코드를 추가했을 때, 다음 메시지가 나타납니다. 정의되지 않은 메서드 'colors'for nil : NilClass - 데이터가없고 메시지도 관련되어 있다고 가정합니다. 하지만 내 코드를 두 번 확인하고 내 실수를 발견하지 못했습니다.모든 도움을 주시면 감사하겠습니다. – user1648020

+0

마침내 작업을 마쳤습니다. (데이터 제출) - attr_accessible : name, : user_id, : colors_attributes를 추가하는 것을 잊었습니다. 이제는 Tasks # 인덱스가 정의되지 않은 메서드'colors '에 대해 :이 코드를 사용할 때 NilClass :

  1. <% = h color.name %>
  2. <% end %>
user1648020

+0

이 줄은 실제로 읽습니다. 정의되지 않은 메소드 'colors'for nil :이 코드를 사용할 때 NilClass :

    <% for @ task.colors %>
  1. <% = h color.name %>
  2. <% end %>
- 위의 오타가 있음 -하지만 여전히 뱉어 내고 오류가 있습니다 - – user1648020

0

사용자 has_many 작업 한 사용자가 여러 작업을 가질 수 있다고,하지만 당신은 당신이 활동 기록

accept_nested_attribures_for에 방법 accept_nested_attributes_for 를 사용해야처럼 저장하려면 사용자는 단일 쿼리에 저장 여러 작업을 사용하고 있습니다 : 작업

관련 문제