2013-08-13 6 views
0

특정 학급의 학생을 선택하는 확인란이 있습니다.하지만 선택하지 않은 학생 ID는 확인란을 통해 전달되지 않습니다. 제발 도와주세요. 또한 아래에 코딩을 포함 시켰습니다. 보기에서체크 박스에 모든 학생 ID를 전달하는 방법

<%= label_tag :students %> 
    <button type="button" id="check_all"> 
    Check/Uncheck All 
</button> 

<table id = "mark"> 
    <tr> 
     <td> 
<table > 
    <thead> 
     <tr> 
      <td><strong>Students List</strong></td> 
     </tr> 
    </thead> 
    <tbody> 
     <% @student.each do |i| %> 
      <tr> 
       <td><%= check_box_tag :student, i.id %><%= i.first_name.capitalize %></td> 
      </tr> 
      <% end %> 
    </tbody> 
    </table>   
    <table> 
     <tr> 
      <td> 

</tr> 
</td> 
</table> 
</td> 
</tr> 
</table> 

JS는 적어도 두 가지 방법으로

$('#check_all').on("click", function(){ $('input[type="checkbox"]').click(); }); 
+0

양식을 제출할 때 선택하지 않은 학생의 ID를 컨트롤러로 보내시겠습니까? 또는 한 반의 학생들을 선택/선택 해제하는 방법을 알고 싶지만 모든 학교가 아닌 다른 학생을 선택하고 싶습니까? 또는 JS 코드가 잘못 작동합니까? (사실이야) – ostapische

+0

미등록 학생 ID를 컨트롤러에 보내고 싶습니다. 양식 제출시 – user2310209

답변

0

당신은 달성 할 수있는 파일. 학생들 수집 IDS에서 제출 된 학생 공제

하나

) : 당신은 체크 박스 전에 같은 name 숨겨진 입력을 사용할 수 있습니다

unselected_ids = @student.collect(&:id) - params[:student].collect(&:to_i) 
) 자바 스크립트

0

를 사용하여 클라이언트 사이트에서 또 다른 숨겨진 필드를 설정하고 제로 값.

<input type='hidden' value='0' name='student'> 
<input type='checkbox' value='1' name='student'> 

양식을 제출하고 확인란이 선택되어 이전 0 값은 1으로 덮어 씁니다. 체크 박스가 선택되지 않으면 0 값이 컨트롤러로 전송됩니다.
값이 하나이지만 ID가 많은 경우에만 작동합니다.

<% @student.each do |s| %> 
    <tr><td> 
     <%= hidden_field_tag "student_all[]", s.id %> 
     <%= check_box_tag "student[]", s.id %><%= s.first_name.capitalize %> 
    </td></tr> 
<% end %> 

그리고에서 : 당신이 student 이름을 사용하는 경우 그리고 당신은 만 마지막 값이 코드에서이 구성을 사용할 수 있습니다이 경우 사용에서의 params[:student]

에 의해 컨트롤러에 전송 확인, 체크 박스에 student[] 이름을 사용해야합니다 컨트롤러는 다음과 같은 확인되지 않은 학생들을받습니다.

student_unchecked = params[:student_all] - params[:student] 
관련 문제