Я хотел бы иметь возможность читать XML-файл, загруженный пользователем (менее 100 КБ), но мне не нужно сначала сохранять этот файл в базе данных. Мне не нужен этот файл после текущего действия (его содержимое анализируется и добавляется в базу данных; однако анализ файла не является проблемой). Поскольку локальные файлы можно прочитать с помощью:
File.read("export.opml")
Я думал о том, чтобы просто создать file_field для: uploaded_file, а затем попытаться прочитать его с помощью
File.read(params[:uploaded_file])
, но все, что он делает, это генерирует ошибку TypeError (не может преобразовать HashWithIndifferentAccess в String). Я действительно пробовал много разных вещей (включая чтение из каталога / tmp), но не смог заставить ни одну из них работать.
Я надеюсь, что краткость моего вопроса не скроет усилия, которые я приложил, чтобы попытаться решить это самостоятельно, но я не хотел загрязнять этот вопрос сотнями способов, как НЕ сделать этого , Большое спасибо всем, кто вмешивается.
Вот мой взгляд:
<% form_for(:uploaded_file, @feed, :url => {:action=>'parse'}, :html=> {:multipart=>true}) do |f| %> <p>
<%= f.label :uploaded_file, 'Upload your file.' %><br />
<%= f.file_field :uploaded_file %>
</p>
<p><%= f.submit 'upload' %></p>
<% end %>
Я настроил настраиваемое действие (загрузка), которое обрабатывает загрузку file_field, которая после отправки передается другому настраиваемому действию (анализ) для обработки. Может ли это быть частью моей проблемы?