2012-06-25 106 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 = {}), 

所以你的第二个尝试是几乎正确的,所不同的是禁用的选项必须在哈希即第四个参数,以应用作为对一个属性指定选择标签本身。