Jak ustawić pustą wartość w polu formularza f.select


Korzystam z poniższych, aby umożliwić moim użytkownikom określenie płci w ich profilach.
<%= f.select (:sex, %w{ Male Female }) %>

Jak utworzyć pustą wartość, którą domyślnie będzie miała lista, jeśli nic nie zostanie przekazane do kolumny user.sex? Po prostu mijam mężczyznę lub kobietę jak sznurek.
Celem jest to, że chcę mieć pustą wartość, aby walidacja mogła upewnić się, że wiedzą, że powinni ją wybrać.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W zależności od tego, czego szukasz, istnieją dwie możliwości:
include_blank
>
<%= f.select (:sex, %w{ Male Female }, :include_blank => true) %>

To zawsze będzie zawierać pustą opcję w zaznaczeniu, która pozwoli ludziom ustawić wartość z powrotem na pustą, jeśli zobaczą ją w formularzu edycji.
prompt
>
<%= f.select (:sex, %w{ Male Female }, :prompt => "Gender...") %>

Obejmuje to określoną wartość podpowiedzi, jeśli pole nie zostało jeszcze określone. W takim przypadku (na przykład w formularzu edycji) nie ma potrzeby przypominania użytkownikowi o wybraniu wartości, aby monit się nie pojawił
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że możesz zrobić coś takiego:
<%= f.select (:sex, %w{ Male Female }, {:include_blank => 'None Specified'} ) %>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

w Rails 4 możesz uzyskać taką wskazówkę:
<%= f.select :gender, %w{ Male Female }, {:prompt => "Gender..."} %>

to działa dla mnie z prostym formularzem.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pójdziesz ze mną
<%= f.select :gender, %w{ Male Female }, :include_blank => true %>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Próbowałem użyć „zachęty” jako ciągu. Ale nowy monit opcji nie pojawił się w wyniku renderowania. Metoda select_tag szuka tylko znaku. Wydaje się, że dotyczy to również: include_blank. Sprawdź opcje. Usuń:
def select_tag(name, option_tags = nil, options = {})
option_tags ||= ""
html_name = (options[:multiple] == true && !name.to_s.ends_with?("[]")) ? "#{name}[]" : name if options.include?(:include_blank)
include_blank = options.delete(:include_blank) if include_blank == true
include_blank = ''
end if include_blank
option_tags = content_tag(:option, include_blank, value: '').safe_concat(option_tags)
end
end if prompt = options.delete(:prompt)
option_tags = content_tag(:option, prompt, value: '').safe_concat(option_tags)
end content_tag :select, option_tags, { "name" => html_name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
end

Zauważ również, że: include_blank i: prompt będą zaznaczone opcjami select lub select_tag, a nie options_for_select.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się