2016-09-04 3 views
0

사용자가 아파트 목록을 만들 수있는 응용 프로그램을 만들고 있습니다.부울 드롭 다운 메뉴의 기본 공백

양식에 사용자에게 상담원 수수료가 있는지 여부와 아파트가 제공되었는지 여부를 지정하라는 메시지가 표시됩니다.

(아파트보기 생성 및 편집에서 표시되는) 아파트 양식에서이 부울 변수에 대한 두 개의 드롭 다운 메뉴 (furnished 및 agent_fee)가 있습니다.

나는 이러한 변수는 모델 검증에 있는지 확인 :. 내가 변수의 존재를 확인하는 경우 허용 될 수

class Apartment < ActiveRecord::Base 
    belongs_to :user 
    validate :agent_fee_and_furnished_are_present 
    def agent_fee_and_furnished_are_present 
     if agent_fee.nil? 
      errors.add(:agent_fee, "You must specify if there is an agent fee") 
     end 
     if furnished.nil? 
      errors.add(:furnished, "You must specify if the apartment is furnished") 
     end 
    end 
end 

(나는 그렇게 FALSE 사용자 정의 유효성 검사를 생성, FALSE는 .blank을 실패 루비가 실행되는지 테스트하십시오.)

제 질문은 뷰 생성 및 편집에서 작동하는 드롭 다운의 첫 번째 옵션으로 빈 옵션을 어떻게 포함시킬 수 있습니까?

내가 시도

(나는 드롭 다운에서 처음으로 무엇 때문에 사용자가 옵션 중 하나를 선택하도록 강요하고, 기본값은 결국하지 않도록이 작업을 수행 할 수) :

<div class="field"> 
    <%= f.label :agent_fee, "Is there an agent fee?" %><br> 
    <%= f.select :agent_fee, options_for_select([['Yes', true], ['No', false]]), {:prompt => ""} %> 
    </div> 

그러나이 필드가 편집 아파트보기에서 렌더링되면 아파트의 agent_fee가 FALSE 인 경우에도 공백 프롬프트가 표시됩니다. (레일이 값이 TRUE 인 경우에만 프롬프트를 무시하는 유사한 .blank? 테스트를 수행하는 것 같습니다.)

다시 한번 제 질문은, 드롭 다운에 첫 번째 옵션으로 빈 옵션을 어떻게 포함시킬 수 있습니까? f.select 호출

답변

0

사용 include_blank를 편집보기에서 작동합니다 (그리고 agent_fee 변수가 NIL하고 FALSE되지 않은 경우에만 표시) :

<%= f.select :agent_fee, options_for_select([['Yes', true], ['No', false]]), { :include_blank => true } %> 
+0

를 불행하게도, 그 작동하지 않습니다. include_blank를 사용할 때 값이 TRUE 인 경우에도 빈 옵션이 항상 표시됩니다. form_options_helper.rb의 문서에 따르면, 주요 차이점은 select에 이미 값이있는 경우 : prompt는 표시되지 않지만 : include_blank는 항상 표시된다는 것입니다. –

관련 문제