5

我正在尝试禁用选择标签。填充我们的不是数据库属性而是整数数组的选项,因此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

以上不是我想要的。它禁用选项而不是选择标签。

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

以上不起作用。没有任何选项被禁用。

虽然在两种情况下都会在下拉菜单中显示正确的值,但不会禁用选择标签,请注意,在此示例中,我只是将禁用设置为 true,但当然我会有条件地禁用选择标签。

4

1 回答 1

12

选择方法定义为

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

所以你的第二次尝试几乎是正确的,除了禁用选项必须在作为第四个参数的哈希中指定,以便作为属性应用于选择标签本身。

于 2012-06-25T16:09:38.453 回答