Ich möchte eine XLSX-temporäre Datei aus einem Formular an das Importmodell übergeben. Allerdings renne ich in ActiveModel::ForbiddenAttributesError
. Ich habe starke Parameter korrekt definiert, aber es kann eine Besonderheit geben, wenn man mit virtuellen Spalten für Klassen ohne Attribute arbeitet.ActiveModel :: ForbiddenAttributesError für virtuelle Spalte in Klasse ohne Attribute
Die Modelllogik funktioniert, wenn auf einen lokalen Dateipfad verwiesen wird, also habe ich das meiste weggelassen. Hier ist mein Code:
new.html.erb
<%= form_for @package_import do |f| %>
<%= f.file_field :file %>
<%= f.submit "Import" %>
<% end %>
package_imports_controller.rb
class PackageImportsController < ApplicationController
def new
@package_import = PackageImport.new
end
def create
@package_import = PackageImport.new(params[:package_import])
if @package_import.save
redirect_to root_url, notice: "Imported packages"
else
render :new
end
end
private
def package_import_params
params.require(:package_import).permit(:file)
end
end
package_import.rb
class PackageImport
include ActiveModel::Model
...
end
Dies war ein Schritt in die richtige Richtung. Weil: file ein virtuelles Attribut ist, musste ich auch 'attr_accessor: file' zum Modell hinzufügen, damit es wie erwartet funktioniert. – sso777