lesson_index sayfasının altına aşağıdaki komutları ekleyelim
</br>
<h2>Import Lesson</h2>
<%= form_tag import_lessons_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<% end %>
routes.rb
resources :lessons do
collection {post :import}
end
lesson_controller.rb
def import
Lesson.import(params[:file])
redirect_to root_url, notice: "Dersler işlendi"
end
models/lesson.rb
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Lesson.create! row.to_hash
end
end
modelimize uygun csv dosyası hazırlayalım:
Ayni isimleri tekrar ekledi, aynı isimler varsa güncellesin, yoksa yeni eklesin
models/lesson.rb
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
lesson = find_by_name(row["name"]) || new
parameters = ActionController::Parameters.new(row.to_hash)
lesson.update(parameters.permit(:name,:student_count))
lesson.save!
end
end