2016-09-04 3 views
0

Я создаю приложение, в котором пользователи могут создавать списки квартир.default blank для boolean dropdown menu

Форма просит пользователей указать, есть ли плата агента и если квартира меблирована.

В частичной части квартиры (которая визуализируется при создании и редактировании просмотров квартиры) у меня есть два раскрывающихся меню для этих логических переменных (меблировано и 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 проверьте, что работает ruby.)

Мой вопрос в том, как включить пустой параметр в качестве первого параметра в раскрывающихся списках, которые будут работать в представлениях Create AND edit?

(Я хочу, чтобы это сделать, так что пользователь вынужден выбрать один из вариантов, а не в конечном итоге по умолчанию, потому что это то, что было первым в выпадающем списке)

Я пробовал:

<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> 

Однако, когда это поле отображается в окне редактирования квартиры, появляется пустое приглашение, даже если агент_идель на квартиру в квартире был ЛОЖНЫ. (Кажется, что рельсы выполняют аналогичный .blank-тест, который только отменяет приглашение, если значение TRUE)

Так что, опять же, вопрос в том, как включить пустую опцию в качестве первого варианта в раскрывающихся списках, будет работать в режиме редактирования (и отображается только если переменная agent_fee является NIL, а не FALSE)

ответ

0

использование include_blank в f.select вызова:

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

к сожалению, это не работает. Когда я использую include_blank, отображается пустой параметр ВСЕГДА, даже если значение было TRUE. Согласно документам в form_options_helper.rb, основное отличие состоит в том, что если выбор уже имеет значение, то: приглашение не будет отображаться, тогда как: include_blank всегда будет. –