10

次の ActiveAdmin フォームがあります。

form do |f|
  f.inputs "Timesheet Details" do
    f.input :jobs_assigned_worker, :label => "Worker", as: :select, collection: Worker.all
    f.input :worked_time_hours,    :label => "Worked Time (Hours)"
    f.input :worked_time_mins,     :label => "Worked Time (Minutes)"
    f.input :driving_time_hours,   :label => "Driving Time (Hours)"
    f.input :driving_time_mins,    :label => "Driving Time (Minutes)"
    f.input :spent_dollars,        :label => "Extra Money Spent"
  end
  f.actions
end

このフォームを編集ビューで使用すると、選択ドロップダウンが自動的に現在の値にデフォルト設定されます。ただし、本番環境では、何らかの理由でドロップダウンがデフォルトで一番上に空白の値になっています (なぜその空白の値があるのですか?)。

編集

問題は、ActiveAdmin が関連付けを認識せず、関連付けられたオブジェクトをデフォルトで選択できないことです。f.inputアソシエーションの をコーディングする方法を理解する必要があります。フォームはタイムシート用です。Timesheet has_manyJobsAssignedWorkers と各 JobsAssignedWorker には Worker があります。

4

2 に答える 2

24

空白の値を含める場合:

f.input :jobs_assigned_worker,
  label: 'Worker',
  as: :select,
  collection: -> { Worker.pluck(:name) },
  include_blank: true

空白の値を含めたくない場合:

f.input :jobs_assigned_worker,
  label: 'Worker',
  as: :select,
  collection: -> { Worker.pluck(:name) },
  include_blank: false

空白の値を使用したいが、オプションとして許可したくない場合:

f.input :jobs_assigned_worker,
  label: 'Worker',
  as: :select,
  collection: -> { Worker.pluck(:name) },
  include_blank: true,
  allow_blank: false
于 2014-08-26T11:48:40.590 に答える
1

「include_blank」オプションを設定してみてください。

form do |f|
    f.inputs "Timesheet Details" do
        f.input :jobs_assigned_worker, :label => "Worker", as: :select, collection: Worker.all, include_blank: false
        f.input :worked_time_hours,    :label => "Worked Time (Hours)"
        f.input :worked_time_mins,     :label => "Worked Time (Minutes)"
        f.input :driving_time_hours,   :label => "Driving Time (Hours)"
        f.input :driving_time_mins,    :label => "Driving Time (Minutes)"
        f.input :spent_dollars,        :label => "Extra Money Spent"
    end
    f.actions
end
于 2014-08-26T06:15:32.910 に答える