如何为f.select表单字段设置空白值

bga*_*oci 58 ruby select ruby-on-rails

我使用以下内容允许我的用户在他们的个人资料中选择他们的性别.

<%= f.select (:sex, %w{ Male Female }) %>
Run Code Online (Sandbox Code Playgroud)

如果没有将任何内容传递给user.sex列,我将如何创建列表默认的空白值?我只是将男性或女性作为一个字符串传递.

目的是我想要一个空白值,所以验证可以确保他们知道他们必须选择它.

Gar*_*eth 124

根据您的追求,有两种可能性:

include_blank

<%= f.select (:sex, %w{ Male Female }, :include_blank => true) %>
Run Code Online (Sandbox Code Playgroud)

这将始终在选择中包含一个空白选项,如果他们在编辑表单上看到这一点,则允许人们将值设置回空白值.

prompt

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

这将包括指定的提示值,只要该字段尚未设置即可.如果它(例如在编辑表单上),则无需提醒用户他们需要选择一个值,因此提示不会出现

  • 第一个选项将发送带有参数的空字符串.任何想法如何绕过这个? (3认同)

jyo*_*eph 34

我想你可以这样做:

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

  • 这在Rails 4中有效。Gareth的答案不适用于提示。 (3认同)