我正在尝试禁用select标记。填充我们的非数据库属性而不是整数数组的选项,所以collection_select似乎在这种情况下不起作用。
技术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标记。
答案 0 :(得分:12)
select方法定义为
f.select(method, choices, options = {}, html_options = {}),
所以你的第二次尝试几乎是正确的,除了必须在作为第四个参数的散列中指定disabled选项才能作为属性应用于select标签本身。