0

У меня есть форма загрузки файла, которая при отправке направляется в действие parse_upload. Однако, когда я пытаюсь извлечь файл или какие-либо атрибуты, которые входят вместе с объектом загрузки файла (original_filename, content_type), я получаю сообщение об ошибке. Файл, если я правильно понимаю, должен быть сохранен в #{Rails.root}/public/uploads under the same name as the original file.file_field в форме, не загружающей ничего

Когда я бег через мое приложение, я получаю ошибку в моем parse_upload действий констатирует NoMethodError

NoMethodError in RevenueModelsController#parse_upload 
    undefined method `original_filename' for "rails_upload_test.xlsx":String 

... моя загрузка не содержит эти методы? Файл (и каталог загрузки) также не существует. Пожалуйста, помогите, я перечислил все соответствующие файлы ниже:

routes.rb

resources :revenue_models do 
    get 'upload', :on => :collection 
end 
match 'revenue_models/upload' => 'revenue_models#parse_upload', :via => :post 
root :to => "home#index" 

действия регулятора:

# UPLOAD create instance variable, call onto upload form, and route to parse_upload action 
def upload 
    @uploaded_doc = { :workbook => RubyXL::Parser.new } 
end 
# Parse the uploaded file 
def parse_upload 
    file_name = (params[:uploaded_doc][:workbook]).original_filename 
end 

upload.html.erb - форма загрузки подчиняется действию parse_upload

<%= form_tag(:url => {:controller => "revenue_models", :action => parse_upload_revenue_models_path}, :html => {:method => "put", :multipart => true}) do %> 
    <%= file_field(:uploaded_doc, :workbook) %> 
    <%= submit_tag("Upload File") %>             
<% end %> 
+0

попробуйте изменить Params [: uploaded_doc] [:] учебное пособие для @uploaded_doc ... или parse_upload отдельного действия? –

+0

parse_upload - отдельное действие. моя форма upload.html.erb отправляется в действие parse_upload, но не превращается в объект загруженного файла – Utopia025

ответ

1

form_tag принимает URL-адрес в первом аргументе, затем параметры. Похоже, вы передаете хэш как первый аргумент, поэтому я предполагаю, что ваш вывод HTML не тот, который вы ищете. Попробуйте что-то вроде этого:

<%= form_tag revenue_models_parse_upload_path, :method => :put, :multipart => true do [...] 
+0

. Удивительно, исправлена ​​эта ошибка – Utopia025

Смежные вопросы