我正在创建一个应用程序,该应用程序可以选择将单个条目添加到数据库模型以及从 Excel 文档上传多个条目。我正在遵循关于上传的 Rails 指南,并希望有一种方法可以利用 RubyXL gem 上传 Excel 文档。以下是相关文档:
收入模型/upload.html.erb
You are in the Upload view...
<%= form_for(@uploaded_doc, :url => {:action => parse_upload_revenue_models_path}, :html => {:method => "put"}) do |f| %>
<%= f.file_field(:workbook) %>
<%= f.submit("Upload File") %>
<% end %>
路线.rb
Dataway::Application.routes.draw do
devise_for :users
resources :revenue_models do
get 'upload', :on => :collection
end
match 'revenue_models/upload' => 'revenue_models#parse_upload', :via => :post
root :to => "home#index"
end
收入模型控制器.rb
...
def upload
@uploaded_doc = { :workbook => RubyXL::Parser.new }
end
def parse_upload
@worksheet = (params[:uploaded_doc])
@worksheet_name = @worksheet.original_filename
end
收入模型模型是最终将使用来自 excel 文档的解析数据进行修改的数据库。该模型不包含已上传文档的列。我在 upload.html.erb 视图中将表单路由到 parse_upload 操作。但是,我收到以下错误:
NoMethodError in Revenue_models#upload
undefined method `model_name' for NilClass:Class
该错误与upload.html.erb 视图中的form_for 有关。请帮忙。