我正在制作一个Rails应用,并希望添加一个上传功能,允许用户通过Excel电子表格一次上传多个条目,而不是一次输入一个条目。
理想情况下,我希望在new.html.erb文件的底部添加单独的上传/提交部分(粗体部分是上传HTML.erb):
...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
**<div class="field">
Or Upload Multiple Entries <br />
<%= form_tag({:action => :upload}, :multipart => true) do %>
<%= file_field_tag 'multi_doc' %>
<% end %>
</div>**
这是我的routes.rb文件:
Dataway::Application.routes.draw do
devise_for :users
resources :revenue_models do
get 'upload', :on => :collection
end
root :to => "home#index"
end
我的revenue_models_controller(尚未开发动作,现在只是重定向):
...
def upload
redirect_to revenue_models_path
end
我已按照Uploading files和Routing files的导轨指南操作,当我尝试打开已修改的/新视图时,我一直收到错误:
Routing Error
No route matches {:action=>"upload", :controller=>"revenue_models"}
Try running rake routes
当我运行rake route时,我会收到上传操作的条目:
upload_revenue_models GET /revenue_models/upload(.:format) revenue_models#upload
最后,我想要做的是上传一个包含多个条目的excel文件,对其进行解析,并有条件地将每个数据行添加到我的数据库中,这是我在上传操作中可以指定的印象。请帮忙!
答案 0 :(得分:0)
请使用form_for
代替form_tag
。
其他什么是multi_doc
field/attribute
的{{1}}?我猜是revenue_model
的{{1}}。
第三,表格中的实例变量field/attribute
在哪里?
第四,您必须首先在您要显示表单的操作/控制器上创建模型的实例变量,例如revenue_model
。
尝试此代码后:
revenue_model
问题非常混乱,试图澄清您的问题,指明您的操作名称和视图中文件的名称。
问候!