csv ファイルに移動して一連のユーザーをアップロードする file_field オプションがあります。現在、ファイルを追加せずに [ユーザーのアップロード] ボタンをクリックできます。この nil 例外を確実にキャッチしたいのですが、その方法がわかりません。コントローラを変更するか、何らかの方法でボタンを無効にしてフォームを変更する必要があります
ファイルをアップロードするための次の簡単なフォームがあります。
<%= simple_form_for :tenant, :html => {:multipart => true}, :url => users_path do |f| %>
<%= f.file_field :csv, :label => 'CSV File' %>
<%= f.submit 'Upload Users' %>
<% end %>
コントローラーに次のビューがあります。
def upload
if request.post?
if params[:tenant][:csv].blank?
flash[:notice] = "Please provide a csv file to upload."
else
file = params[:tenant][:csv].read
CSV.parse(file, headers: true, header_converters: :symbol).each { |row| User.create(row.to_hash) }
end
respond_to do |format|
format.html { redirect_to users_path }
format.json { head :no_content }
end
else
# Return view
end
end