2016-08-03 2 views
0

checked 상태가 올바르게 적용되지 않는 레일즈 앱의 여러 라디오 버튼 그룹에 문제가 있습니다. ... 내가 당신을 위해 그것을 무너 뜨리는하자레일 폼 - 라디오 버튼 확인 상태가 올바르게 적용되지 않습니다.

양식은 collection_radio_buttons 형태 도우미로 생성 된 행의 라디오 버튼의 네 그룹, 각이 있습니다

Left buffer width 
<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display) do |b| %> 
    <%=j b.label(class: "left_buffer_width_label") %> 
    <%=j b.radio_button(class: "left_buffer_width") %> 
<% end %> 

Right buffer width<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display) do |b| %> 
    <%=j b.label(class: "right_buffer_width_label") %> 
    <%=j b.radio_button(class: "right_buffer_width") %> 
<% end %> 

Left buffer condition<%= collection_radio_buttons("", "", @bufferConditionScore, :id, :display) do |b| %> 
    <%=j b.label(class: "left_buffer_condition_label") %> 
    <%=j b.radio_button(class: "left_buffer_condition") %> 
<% end %> 

Right buffer condition<%= collection_radio_buttons("", "", @bufferConditionScore, :id, :display) do |b| %> 
    <%=j b.label(class: "right_buffer_condition_label") %> 
    <%=j b.radio_button(class: "right_buffer_condition") %> 
<% end %> 

나는 그것을 설정할을 처음 있도록 각 그룹의 라디오 버튼을 체크, 나는 옵션 해시과 같이 설정 작업이 점점 일부 성공을 거두었 : 나는 그것을 추가 할 때

Left buffer width<%= collection_radio_buttons("", "", @bufferWidthScore, :id, :display, {checked: @bufferWidthScore.first.id}, {}) do |b| %> 
    <%=j b.label(class: "left_buffer_width_label") %> 
    <%=j b.radio_button(class: "left_buffer_width") %> 
<% end %> 

그래서이 라디오 버튼의 첫 번째 그룹에 근무하지만, 두 번째 그룹의 첫 번째 라디오 버튼 만 첫 번째 그룹에는 확인 된 버튼이 없었습니다. Ok, 나는 그것이 이상하다고 생각했지만, 테스트로서,이 코드를 다른 모델 (bufferWidth보다는 bufferCondition)과 관련있는 세 번째 라디오 버튼 집합에 추가했습니다. 동일한 문제! 그건 중요하지 않아! 이제 세 번째 그룹의 첫 번째 버튼이 확인되었지만 다른 그룹의 다른 버튼은 확인되지 않았습니다.

요약하면이 코드를 네 개의 단추 그룹에 모두 입력하면 모델에 관계없이 마지막 그룹의 첫 번째 단추 만 확인됩니다.

왜 이런 일이 일어 났으며 어떻게 해결할 수 있는지 설명 할 수 있습니까? 이 버튼 그룹의 다른 동작은 서로 교차하지 않는 것 같습니다. 왜이 버튼 그룹이 작동합니까? 이것은을 확인하지만,뿐만 아니라 TRUE ': I 체크`에`html_options` 해시를 설정하면이 또한 발생 -

+0

주 ... jQuery를 함께했던 나사 그룹의 마지막 버튼 ... – skwidbreth

답변

0

아, 레일, 난 그냥

$(x).next(".sub_report_container").find('.left_buffer_width').each(function(i){ 

    if(i === 0){ 
     $(this).prop("checked", true); 
    }; 

    $(this).attr('name', 'left_buffer_width_' + fieldsetID); 
    $(this).attr("id", "fieldset_" + fieldsetID + "_left_buffer_width_" + i); 
});