activeadminでcreateを上書きする必要がある状況があります。私はフィールドを自動入力し、データがすでに存在する場合はそれを更新しなければなりません。ここに私の作成方法です:コントローラをオーバーライドした後にactiveadminフォームにエラーを表示する方法
def create
id = params[:company].dig(:id)
if id.present?
@company = Company.find(id)
if @company.update(permitted_params[:company])
redirect_to resource_url
flash[:notice] = 'Company created successfully'
else
#add errors to semantic errors
end
else
new_permitted_params = permitted_params[:company].except(:id)
@company = Company.new(new_permitted_params)
@company.save
if @company.errors.any?
#add this to semantic errors so that activeadmin handles and displays the errors
end
end
end
私は彼/彼女が無効なエントリを入力した場合、ユーザーが知っているように、検証に違反エラーを表示します。
私はthisを見つけましたが、それは解決策以上の回避策のようです。これを解決するのを手伝ってください。
ありがとうございます。
私はあなたがなぜこれをやったのか説明しましょう。私はこのフォームでオートコンプリートを適用しました。私は受け取っているデータですべてのフィールドを設定しています。それで、それがロジックが作用する場所です。 IDが設定されている場合(自動完成時にオブジェクトを選択しなかった場合は表示されません)、それ以外の場合は更新が作成されます。 – UsamaMan