program tip

f.select 양식 필드에 공백 값을 설정하는 방법

radiobox 2020. 12. 14. 08:02
반응형

f.select 양식 필드에 공백 값을 설정하는 방법


사용자가 프로필에서 성별을 선택할 수 있도록 다음을 사용하고 있습니다.

<%= f.select (:sex, %w{ Male Female }) %>

user.sex 열에 아무것도 전달되지 않은 경우 목록의 기본값이되는 빈 값을 어떻게 만들 수 있습니까? 나는 단순히 남성 또는 여성을 끈으로 전달하고 있습니다.

목적은 빈 값을 원하므로 유효성 검사를 통해 선택해야 함을 인식 할 수 있습니다.


목표에 따라 두 가지 가능성이 있습니다.

include_blank

<%= f.select (:sex, %w{ Male Female }, :include_blank => true) %>

여기에는 항상 선택 항목에 빈 옵션이 포함되어 사용자가 편집 양식에서이 값을 볼 경우 값을 다시 빈 값으로 설정할 수 있습니다.

prompt

<%= f.select (:sex, %w{ Male Female }, :prompt => "Gender...") %>

여기에는 필드가 아직 설정되지 않은 한 지정된 프롬프트 값이 포함됩니다. 예를 들어 편집 양식에있는 경우 프롬프트가 나타나지 않도록 사용자에게 값을 선택해야 함을 상기시킬 필요가 없습니다.


다음과 같이 할 수 있다고 생각합니다.

<%= f.select (:sex, %w{ Male Female }, {:include_blank => 'None Specified'} ) %>

Rails 4에서는 다음과 같은 프롬프트를 얻을 수 있습니다.

<%= f.select :gender, %w{ Male Female }, {:prompt => "Gender..."} %>

그것은 간단한 형태로 나를 위해 일합니다.


당신은 함께 간다

<%= f.select :gender, %w{ Male Female }, :include_blank => true %>

'프롬프트'를 문자열로 사용하려고했습니다. 그러나 렌더링 된 출력에서 ​​새 옵션 프롬프트가 나타나지 않았습니다. select_tag 메소드는 기호 만 검색합니다. : include_blank의 경우도 마찬가지입니다. options.delete를 확인하십시오.

  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

또한 : include_blank 및 : prompt는 options_for_select가 아니라 select 또는 select_tag의 옵션입니다.

참고 URL : https://stackoverflow.com/questions/4444523/how-do-i-set-a-blank-value-for-an-f-select-form-field

반응형