여러 개의 모델이있을 때 중첩 된 모델 양식에 문제가있어 모든 라디오 버튼이 같은 그룹에있는 것으로 처리됩니다.여러 개의 중첩 모델이있는 레일 형태로 인해 라디오 그룹에 문제가 발생합니다.
내 모델이 같은 has_many 관계 포함
class Order < ActiveRecord::Base
has_many :order_items
accepts_nested_attributes_for :order_items
end
Class OrderItem < ActiveRecord::Base
belongs_to :order
end
난 후,이 양식에 포함
<% fields_for "order[order_items_attributes][]", order_item do |f| %>
및 사용 OrderItem
모델 형태를 생성하는 부분이이 라디오 버튼 그룹은 for 루프 안에 생성 된
radio_button_tag "order[order_items_attributes][][colour_id]", "#{colour.id}"
T 하나의 자식이있을 때 그의 작품은 괜찮아요, 그러나 내가 여러 라디오 버튼을 삽입하자마자 모든 라디오 버튼은 모두 같은 속성을 가진 동일한 그룹에 속합니다. name="order[order_items_attributes][][colour_id]"
. 이 모든 것은 새로운 모델 형식이므로 배열 인덱스 (name="order[order_items_attributes][0][colour_id]"
)를 사용할 수 없습니다. 레일스에서 오류를 제공합니다. expected Hash (got Array) for param 'order_items_attributes'
마지막 부분에 대해 잘못되었습니다. 오류는 인덱싱 된 이름 속성과 색인되지 않은 이름 속성이 혼합되어 있기 때문에 발생했습니다. 색인 값을 추가하는 것이 이것을 해결하는 열쇠였습니다. 두 개의 중첩 모델이있을 때
{"order_items_attributes"=>
[{"size"=>"Small",
"colour_id"=>"4"],
"first_name"=>"sdf",
"last_name"=>"sdf",
"email"=>"[email protected]"}
그리고 :
{"order_items_attributes"=>
[{"size"=>"Small",
"colour_id"=>"4"},
{"size"=>"Small"}],
"first_name"=>"sdf",
"last_name"=>"sdf",
"email"=>"[email protected]"}
는 만 볼 수 있듯이 최초의 단 하나의 중첩 된 모델이있을 때 여기
는 params[:order]
해시의 내용입니다 order_item
에 colour_id 속성이 있습니다. 선택된 라디오 버튼이 어떤 모델에 속해 있는지에 관계없이 발생합니다 (이는 의미가 있습니다).
각 하위 모델에 대해 별도의 그룹을 만들도록 라디오 버튼을 렌더링하는 방법은 무엇입니까?
하나의 중첩 된 order_item이있는 경우 (즉, 작동하는 경우)와 둘 이상의 중첩 된 order_item이있는 경우에 대해 params [: order] 해시의 내용을 붙여 넣을 수 있다면 도움이됩니다 (즉, 작동하지 않는 경우). 두 예제 모두 스택 오버플로에 붙여 넣기 전에 pretty print를 통해 params [: order] 해시를 실행하십시오. – nelstrom