1

データベース モデルに単一のエントリを追加するオプションと、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

Revenue_models_controller.rb

...
def upload
    @uploaded_doc = { :workbook => RubyXL::Parser.new }
end
def parse_upload
    @worksheet = (params[:uploaded_doc])
    @worksheet_name = @worksheet.original_filename
end

Revenue_models モデルは、Excel ドキュメントから解析されたデータで最終的に変更されるデータベースです。モデルには、アップロードされたドキュメントの列が含まれていません。parse_upload アクションにルーティングする upload.html.erb ビューにフォームがあります。ただし、次のエラーが発生します。

NoMethodError in Revenue_models#upload
    undefined method `model_name' for NilClass:Class

このエラーは、upload.html.erb ビューの form_for と関係があります。助けてください。

4

0 に答える 0