2011-12-05 2 views
1

저는 레일스에서 ​​새로 도입되었으며, 체크 박스 값을 얻는 데 문제가 있습니다. 나는 스레드와 API 문서를 살펴 보는 데 꽤 많은 시간을 보냈지 만 여전히 아무 것도 쓸 수없는 것 같지 않습니다.레일즈 체크 박스 값은 항상 nil입니다.

체크 박스는 어떤 모델의 속성에 바인딩되지 않지만, 여기에

확인란 선언의 무시 요소에/걸러 부울 될 것입니다 :

<%= form_tag model_path, :method => 'get', :id => "data_search" do %> 
    <%= hidden_field_tag :direction, params[:direction] %> 
    <%= hidden_field_tag :sort, params[:sort] %> 
    <p> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "Search", :name => nil %> 
     <%= hidden_field_tag "include_ignored", 0 %> //tried the hidden field trick also, to 
                //no avail 
     <%= check_box_tag "include_ignored", 0 %> 
     Include ignored items 
    </p> 
<% end %> 

Model.where(:is_ignored => params[:include_ignored]) 
: 나는

나중에 내가 모델 검색이 사용하고 어떤 효과뿐만 아니라 form_for 외부 확인란 태그를 선언 시도한 것을

콘솔의 쿼리 출력은 디버거와 같은 이야기를합니다. params [: include_ignored]가 null입니다.

무엇이 누락 될 수 있습니까? 미리 감사드립니다.

답변

2

제출을 클릭하면 을 클릭하면 확인란 상태가 항상 전달됩니다 (항상 0) 태그에 대한 최종 도달 때문입니다.

<%= check_box_tag "include_ignored" %> 

이 후 0을 넣지 마십시오이어야한다.

+0

그 일부이기는하지만 기본적으로 기본값이없는 것으로 보입니다. 페이지가 처음으로로드 될 때,이 체크 박스의 값은 false 여야하므로 표에 무시되지 않는 항목 만 표시되어야합니다. 컨트롤러에서이 사건을 쉽게 처리 할 수는 있지만 나중에 다시 덮어 쓸 새로운 값을 얻을 수 없다면 저에게 도움이되지 않을 것입니다 ... – BrMcMullin

+0

음, 여기서 이해하지 못합니다. 예, check_box_tag는 페이지가 렌더링 될 때 html이 보여주는 것과 같이 기본적으로 선택 취소됩니다. 나중에 호출 할 때 체크 박스를 클릭했는지 여부를 컨트롤러에서 제어하고 싶습니까? – huntsfromshadow

+0

나는 체크 박스의 값을 부울 값으로 사용하고 컨트롤러가 레코드를 수집하여 렌더링 할 때 "무시 된"레코드를 표시할지 여부를 결정하는 데 사용하려고합니다. 선택을 취소하면 "무시 된"레코드가 보이지 않게 필터링됩니다. 선택하면 "무시 된"레코드가 뷰에 포함됩니다. – BrMcMullin

관련 문제