ben

OMÜ , Bilgisayar Mühendisliği, 13'

15 Aralık 2015 Salı

import csv

Bir onceki projenin üzerinden devam ediyorum.


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