私はAAでコントローラを作成しようとしていますが、エラーが発生しているだけでなく、フォームの値も渡していません。ActiveAdmin作成メソッド
私はdate_enteredフィールドに現在の日付を追加しようとしています
permit_params :utf8, :vehicle_permit_id, :vehicle, :date_issued, :issued_by, :date_entered, :entered_by,
vehicle_attributes: [:license_number, :vehicle_permit_id]
form do |f|
f.inputs do
f.has_many :vehicle, new_record: false do |veh|
veh.input :license_number, :collection => Vehicle.all.map{ |vehicle| [vehicle.license_number]}
end
f.input :vehicle_permit_id
f.input :date_issued, as: :date_picker
f.input :issued_by
end
f.actions
end
controller do
def new
@vehicle_permit = VehiclePermit.new
@vehicle = @vehicle_permit.build_vehicle
end
def create
vehicle = Vehicle.find_by(license_number: vehicle_permit_params[:vehicle_attributes][:license_number])
@vehicle_permit = current_user.vehicle_permit.build(vehicle_permit_params.merge(date_entered: Date.today, entered_by: current_admin_user.email[:vehicle_permit])
@vehicle_permit.update(vehicle: vehicle)
super
end
def update
super
end
def vehicle_permit_params
params.permit vehicle_permit: [:vehicle_permit_id, :date_issued, :issued_by, :date_entered, :entered_by, vehicle_attributes: [:license_number]]
end
def set_vehicle_permit
@vehicle_permit = VehiclePermit.find(params[:id])
end
end
管理/ vehicle_permit.rb、およびフィールドが入力したに現在の管理ユーザーの電子メール値。私はvehicle_permitがNILであるというエラーを受けているので、なぜ私が指定したパラメータを渡していないのか分からない。フォームは:vehicle
入力フィールドにも入っていないので、選択した値を別のモデル/テーブルに入力することができます。
EDIT
これは、渡されたパラメータのアプリケーショントレースです。私は適切にネストされた属性を使用していませんでした実現
app/admin/vehicle_permit.rb:60:in `create'
Request
Parameters:
{"utf8"=>"✓","authenticity_token"=>"JeyVHNsSyGi4U22RbsplTexSawKEj3QYAItAFNXrn601zL0n6nu+pkCObkTmY0Du3wd1TN3BWLXaGyGt48glUw==",
"vehicle_permit"=>{"vehicle_permit_id"=>"AU-4444", "date_issued"=>"",
"issued_by"=>""},
"commit"=>"Create Vehicle permit"}
EDIT 2 は、私が車両から来ているlicense_numberネストされた属性を持つように私のフォームを編集しました。今では私のfind_by
には何も返って来ません。なぜ車のテーブルに車がないのか分かりません。
ここにvehicle_permitがあるのはなぜですか?entered_by:current_admin_user.email [:vehicle_permit] ' – xeon131
私がしなかったとき、私は' UTF8'属性エラーを渡すことができなくなっていたからです。 –
お元気ですか、この前の答えをもう一度見てもらえますか? https://stackoverflow.com/questions/47497300/activeadmin-passing-variable-in-controller私はあなたがコレクションのタグを別々に定義しているのを見ています(しかし、私はあなたの仕事の仕組みがあなたのために働いているかどうかを知っていると思います) 。さらに、ActiveAdminのドキュメント(https://activeadmin.info/2-resource-customization.html)をもう一度見てください。 'permitted_params'は既にAAメソッドです。ここではあなたのコード内でオーバーライドしています。 – inveterateliterate