2016-06-30 3 views
0

학습 목표와 작업 사이에 HABTM 관계가 있습니다. 나는 http://railscasts.com/episodes/17-habtm-checkboxes을 통해 체크 박스를 구현할 수있었습니다. 그러나 모든 확인란을 선택 취소하면 문제가 발생합니다.레일 4 : HABTM 체크 박스 문제 - nil 오류

양식을 날려 참조 :

<% for task in Task.all %> 
<%= check_box_tag "tlo[task_ids][], task.id, @tlo.tasks.include?(task) %> 
<%= task.name%> 
<%end%> 

TLO 컨트롤러 : 내 허용 PARAMS에서

def update 
    params[:tlo][task_ids] ||= [] 
    respond_to do |format| 
     if(@tlo.update) 
     format.html {redirect_to @tlo} 
     end 
     end 
    end 

예, task_ids: []. 로그에서 보면 undefined method [] for nil:nilClass.이 표시됩니다. 선택되지 않은 체크 박스 만있는 양식에서는 아무 것도 제출하지 않으므로 일부 리소스가 표시됩니다. 누구든지 해결 방법에 대한 제안이 있습니까?

+0

'params [: tlo]'이 (n) 오류로 보입니다. 전체 양식을 보여 주시겠습니까? 'params'의 가치는 무엇입니까? 당신은 양식 코드에서 "빠진 것입니다. 질문에 여기에있는 것이 틀림 없습니다. – Leito

답변

0

확인란을 선택하지 않으면 해당 매개 변수가 제출 된 양식과 함께 전송되지 않습니다. 지정된 이름의 모든 확인란이 선택 취소 된 경우 관련 매개 변수가 요청에 포함되지 않습니다. 이것이 접근하려고 할 때 nil이되는 이유입니다.

요청에 매개 변수를 유지하려면 비어있는 값으로 숨겨진 필드가 필요합니다. 양식의 모든 확인란 앞에 배치하십시오.

<%= hidden_field_tag "tlo[task_ids][]", '' %> 
+0

OMG! 당신은 천재입니다! 나는이 문제에 2 일을 보냈습니다! –