我有一个选择菜单,就像这样
<%= f.select(:size, options_for_select(@sizes_availiable), :prompt => "Select Size") %>
提示“选择尺寸”。问题是,用户可以选择“选择尺寸”,它仍然允许提交表单。鉴于所有大小也是字符串,我如何禁止用户选择它作为值?
我有一个选择菜单,就像这样
<%= f.select(:size, options_for_select(@sizes_availiable), :prompt => "Select Size") %>
提示“选择尺寸”。问题是,用户可以选择“选择尺寸”,它仍然允许提交表单。鉴于所有大小也是字符串,我如何禁止用户选择它作为值?
您可以做几件事:
# as suggested, use :include_blank
f.select :size, options_for_select(@sizes_availiable), include_blank: "Select Size"
# wihch creates an 'option' tag with no value and 'Select Size' text
# or/and add a validation
validates :size, presence: true
validates :size, numericality: true # or
validates :size, format: { with: /\d+/ } #
但是,您应该始终包含验证以防止恶意用户操纵表单并提交随机内容。
使用include_blank
而不是prompt
.
<%= f.select(:size, options_for_select(@sizes_availiable), {:include_blank => "Select Size"}) %>
比你可以size
在你的模型中验证。
validates :size, :presence => true
使用:禁用
<%= f.select(:size, options_for_select(@sizes_availiable), :prompt => "Select Size", :disabled => 'Select Size') %>
参考:
http://zittlau.ca/ruby-on-rails-disabling-a-select-tag-using-the-select-helper/