列表页增加: CSV导入的按钮和功能
首先增加路由,
resources :users do^M
55 collection do^M
56 get :download_csv^M
57 post :import
58 end^M
59 end^M
然后增加视图页面
<%= form_tag import_users_path, multipart: true do %>
<p>导入文件:<%= file_field_tag :file %> <%= submit_tag "导入" %></p>
<% end %>
在路由增加
def import
require 'csv'
tmp = params[:file]
current_file_name = tmp.original_filename + Time.now.to_i.to_s
uploaded_file = File.join("public/upload_files", current_file_name)
File.open(uploaded_file, 'wb') do |f|
f.write(tmp.read)
end
#读取csv文件
csv_text = File.read(uploaded_file)
csv = CSV.parse(csv_text,:headers => true)
csv.each_with_index do |row, index|
User = User.new
user.email= row['email']
user.name= row['name]
#user.manager = row['manager'] 不应该放在csv导入中。
user.manager = current_manager.email#在application页面已经进行管理员登录的判断
user.save!
end
redirect_to users_url, notice: '操作成功'
end
然后在视图页面就可以使用导入进行文件数据的传输,完成后就会返回index页面
