2012-06-25 28 views
5

選択タグを無効にしようとしています。オプションではなく、データベースの属性ではなく、整数の配列を埋めるため、collection_selectはこのような状況では動作しません。rails - 選択タグを無効にする

技術1:

select_tag(:zev_qty, options_for_select(display_quantity(@order_subject_supplies_request.site), {:disabled => display_quantity(@order_subject_supplies_request.site)})) 

def display_quantity(site) 
    if site 
    site.open_site? ? [[0,0],[1,1],[2,2]] : [[0,0],[1,1]] 
    else 
    [] 
    end 
end 

上記の私が欲しいものではありません。これは、selectタグではないオプションを無効にします。

技術2:

f.select(:zev_qty, display_quantity(@order_subject_supplies_request.site), {:disabled => true}) 
    def display_quantity(site) 
    if site 
     site.open_site? ? [0,1,2] : [0,1] 
    else 
     [] 
    end 
    end 

上記動作しません。どのオプションも無効になっていません。

どちらの場合でも正しい値がドロップダウンに表示されますが、selectタグは無効ではありません。この例では、disabledをtrueに設定していますが、もちろんselectタグを条件付きで無効にします。

答えて

12

f.select(method, choices, options = {}, html_options = {}), 

はそうあなたの第二の試みが無効オプションがに属性として適用するために四番目のパラメータであるハッシュで指定しなければならないことを除いて、ほとんど正解だったようselectメソッドが定義されていますタグそのものを選択します。

関連する問題