5

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 タグを無効にしていることに注意してください。

4

1 に答える 1

12

select メソッドは次のように定義されます。

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

select タグ自体に属性として適用するには、無効なオプションを 4 番目のパラメーターであるハッシュに指定する必要があることを除いて、2 回目の試行はほぼ正しかったです。

于 2012-06-25T16:09:38.453 に答える