Mam Upload
klasy ActiveModel, która ma jeden atrybut: filename
. Ponieważ istnieje tylko jeden atrybut, pozostawiając puste pole formularza kończy się podnoszenie błąd przy użyciu następującego kodu w moim kontrolera:Najlepszy sposób na radzenie sobie z brakującymi wymaganymi parametrami za pomocą StrongParameters?
class UploadsController < ApplicationController
def create
@upload = Upload.new(upload_params)
# ...
end
private
def upload_params
params.require(:upload).permit(:filename)
end
end
Najlepszym obejście mam wymyślić ma rescue
w metodzie upload_params
np:
def upload_params
params.require(:upload).permit(:filename) rescue ActionController::Parameters.new
end
Alternatywnie, przypuszczam, że można dodać ukryte pole, aby upewnić się, że pole filename
jest zawsze ustawiony na czymś nie wiem co, np:
= simple_form_for upload do |f|
= f.input :filename, as: :hidden, input_html: { value: '' }
= f.input :filename, as: :file
= f.submit 'Upload'
Czy istnieje lepszy sposób obsługi użytkownika, który nie wypełnia żadnych atrybutów formularza?