我正在尝试将CSV文件(没有标题)上传到Rails中的表单,然后根据该文件的内容更改我的数据库。
现在,我遇到的问题是我知道我的路线必须正确,因为我能够找到正确的方法...但是,我的@imported变量说即使我上传也是零一份文件。
我能为此得到任何帮助吗?这将是我在rails中的第一个文件上传,因此我们可以一起跨越这个里程碑......
以下是我视图中的表单,映射到#ship操作:
<%= form_for @import, :url => {:action => "ship", :controller => "imports"} do |f| %>
<%= f.file_field :import %>
<%= f.submit %>
<% end %>
这是我控制器中的相应方法:
def ship
@import = CSV.read(params[:file])
@import.each do |i|
Product.ship(@import[i][0]) #I believe the #read method imports
end #CSV files as an array of arrays
redirect_to "/" #But I have yet to get past the
end #first line, so I'm unsure
答案 0 :(得分:1)
Sergio Tulentsev是对的。您需要使用params[:import][:import]
。第一个import
是您资源的名称(来自form_for @import
,第二个import
是字段名称(来自f.file_field :import
)。
http://guides.rubyonrails.org/form_helpers.html#uploading-files
的更多信息