2013-08-10 1 views
0

미리 도움을 청하십시오! 내 사용자에게 내 MySQL 데이터베이스에 저장 한 정보를 볼 수있는 방법을 제공하고 있습니다. 문제는 내 확인란 상태가 사용자가 레코드에 저장 한 내용에 따라로드되지 않는다는 것입니다.Ruby에서 조건문과 함께 동작하는 체크 박스를 얻을 수 없습니다.

<% if !params[:newitem_id].blank? and @newitem.optimize != 1 %> 
    <input type="checkbox" name="optimize" id="optimize"> 
    <% else %> 
    <input type="checkbox" name="optimize" id="optimize" checked="true"> 
    <% end %> 

내 조건 문장은 newitem_id가 있는지 찾기를 시작합니다. 이것은 숨겨진 필드이며, 단지 @newitem 정보를 모두보기에 연결합니다.

<input name="newitem_id" type="hidden" value="<%= params[:newitemid] %>" /> 

페이지의 다른 곳에서 조건문을 사용하면 정상적으로 작동합니다.

다음으로, 조건문은 @newitem의 레코드를보고 optimize가 1인지 0인지 확인합니다. @ newitem.optimize가 1이면 확인란을 선택합니다. 그렇지 않다면 나는 그것을 확인하고 싶지 않다.

불행히도, 체크 박스 필드가 0

EDIT 1

newitemlookup.html.erb가 체크 박스 형태가 사는 도면이다 때에도 체크로 나타낸다. 몇 가지 사항을 변경하고 컨트롤러에서 코드를 추가했습니다. 그러나 모든 체크 박스는 체크되지 않아도 체크됩니다.

"@ newitem.optimize"가 반환하는 값을보고 싶었습니다. 그리고 데이터베이스의 1과 0이 뷰에서 "true"및 "false"로 표시됩니다. < % = @ newsavedmap.optimize %>. 이것이 문제가 될 수 있습니까?

newitemlookup_controller

if params[:newitemid] 
    @newitem = Newitem.find(:first, :conditions => {:id => params[:newitemid]}) 

newitemlookup.html.erb

<% if params[:newitemid] and @newitem.optimize = false %> 
    <input type="checkbox" name="optimize" id="optimize"> 
    <% else %> 
    <input type="checkbox" name="optimize" id="optimize" checked="true"> 
    <% end %> 
+0

당신이 정말로 확인 된 경우를 , 그것은'params [: newitem_id] .blank? '가'true'이어야 함을 암시해야합니다. 아마도 "nil"을 검사 할지라도 (정말로 "빈 값"이 아닌 값을 기대하지 않는다면) :'if params [: newitem_id]와 @ newitem.optimize! = 1' – lurker

+0

감사합니다. mbratch . 실제로 비어 있어야하는지 숨겨진 필드의 코드를 추가했습니다. 'if params [: newitem_id]와 @ newitem.optimize! = 1'을 사용할 때, 체크 박스는 최적화가 0 일 때에도 항상 체크됩니다. – KDP

+0

내가 말했듯이, 문제는'params [: newitem_id]'값입니다. 빈칸이거나 nil이라면'optimize'의 값이 무엇이든 상관 없습니다. 체크 박스가 체크됩니다. 따라서'param [: newitem_id]'는 공백이거나 귀하의 경우에는 nil이어야합니다. – lurker

답변

0

나는 몇 가지 조사를하고 기록을보고 한 후 그 결과를 반환 체크 박스를 추가하는 방법을 알아 냈어. 여기에 제가 사용한 코드가 있습니다. 이것은 if/then 문을 대체했습니다.

<%= check_box_tag 'optimize', '1', @newitem.optimize %> 
0

당신은 예를 들어 F와 같은 양식 빌더 사용하는 경우 : @의 newitem.optimize`은`참으로 0`하고 확인란이 선택보고있는 '것을

<%= check_box_tag 'optimize', '1', f.object.optimize %>