私はそのような選択メニューを持っています
<%= 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
使用:disabled
<%= 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/