3

オプションが選択されているかどうかを検証したいフォームがあります。デフォルトの開始オプション「製品を選択してください」を受け入れたくない

現在これを使用していますが、初期化されていない定数エラーが発生します。構文を間違って書いていると思います。コントローラ:

validates :product_name, :presence => { :unless => (product_name = "Please Select a Product")}

意見:

        <span class="span5 pagination-right">
            <%= f.label "Product" %>
            <%= f.select :product_name, options_for_select([ ["Please Select a Product"] ]) %>
        </span>

オプションはどのように記述すればよいですか?ありがとうございました

product_name は次のように変更されます。

<script>
$(document).ready(function() {

    $('#ticket_product_name').html("<option>Please Select a Product</option>");
    $('#ticket_firmware_version_string').html("<option>Please Select a Firmware</option>");

    $('#category').change(function(){

        $('#ticket_product_name').html("<option>Please Select a Product</option>");
        $('#ticket_firmware_version_string').html("<option>Please Select a Firmware</option>");

        if ($('#category').val() == "blah")
        { 
            $('#ticket_product_name').append("<option>blah</option>");
            $('#ticket_product_name').append("<option>blah</option>");
        }
        else if ($('#category').val() == "another category")
        { 
            $('#ticket_product_name').append("<option>blah product</option>");
        }

オプションの最後まで、スクリプトを終了します。

4

4 に答える 4

2

次のように、 select helper のinclude_blank を使用する必要があります。

<%= f.select :product_name, options_for_select([["opt1",1],["opt2",2]]), include_blank: true %>

そして、モデルで

validates :product_name, :presence => true

@MrYoshijiは私の答えに真実をコメントしました-空白にすることを許可していない場合、簡単な方法は選択に空白のオプションを追加しないことです

于 2013-09-05T18:09:49.797 に答える
2

あなたが探しているのは、この選択のプレースホルダーだと思います。この場合、無効なオプションを使用しました。

<% options = options_for_select(["Select an option", ["Product #1",1], ["Product #2",2]], disabled: "Select an option") %>

<%= f.select :product_name, options %>
于 2013-09-05T18:23:50.687 に答える