送信すると、parse_uploadアクションにルーティングされるファイルアップロードフォームがあります。ただし、ファイル、またはファイルアップロードオブジェクトに付属する属性(original_filename、content_type)のいずれかを取得しようとすると、エラーが発生します。私が正しく理解していれば、ファイルは元のファイルと同じ名前で#{Rails.root} / public/uploadsに保存する必要があります。
アプリを実行すると、parse_uploadアクションでNoMethodErrorを示すエラーが発生します
NoMethodError in RevenueModelsController#parse_upload
undefined method `original_filename' for "rails_upload_test.xlsx":String
...私のアップロードにはこれらのメソッドが含まれていませんか?ファイル(およびアップロードディレクトリ)も存在しません。助けてください、私は以下のすべての関連ファイルをリストしました:
ルート.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 %>