2012-06-25 154 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 

上面的是不是我想要的。它禁用選項而不是選擇標籤。

技術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

select方法被定義爲

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

所以你的第二個嘗試是幾乎正確的,所不同的是禁用的選項必須在哈希即第四個參數,以應用作爲對一個屬性指定選擇標籤本身。