How do I set a blank value for an f.select form field

前端 未结 5 1731
花落未央
花落未央 2021-02-01 12:24

I am using the following to allow my users to select their sex in their profile.

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

How would I c

5条回答
  •  借酒劲吻你
    2021-02-01 12:52

    I tried to use 'prompt' as a string. But in the rendered output, the new option prompt was not appearing. The select_tag method searches only for a symbol. It appears to be the case for :include_blank as well. Check out the 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
    

    Also note that :include_blank and :prompt will be options of the select or select_tag, not the options_for_select.

提交回复
热议问题