Ruby on Rails Tutorial: Stvaranje obrazovne platforme

Ruby on Rails Vodič za blog post: Stvaranje obrazovne platforme

Ovaj serijal vodiča će vas voditi kroz izradu Ruby on Rails aplikacije prilagođene za obrazovnu platformu. Koristit ćemo MySQL kao bazu podataka i Tailwind CSS za stiliziranje. Aplikacija će imati dvije uloge korisnika—tutore i klijente—s funkcionalnostima kao što su stvaranje računa, objavljivanje kategorija lekcija, rezervacija lekcija i upravljanje dostupnošću.

Dio 1: Postavljanje Rails aplikacije s Tailwind CSS-om i MySQL-om

Specifikacije:

  • Ruby on Rails aplikacija koristeći Tailwind CSS za stiliziranje.
  • MySQL baza podataka s korisnikom root i bez lozinke.

Koraci:

  1. Kreirajte novu Rails aplikaciju
    • Naziv i lokacija: Pokrenite ovu naredbu u terminalu gdje
    • želite svoj projekt mapu.
    • Naredba:
      • rails new educational_platform -d mysql --css tailwind
        
  2. Konfigurirajte bazu podataka
    • Naziv i lokacija: config/database.yml
    • Isječak koda:
  3. Instalirajte Tailwind CSS
  4. Pokrenite kreiranje baze podataka
    • Naredba za pokretanje:

Ovaj dio postavlja temelje za našu aplikaciju, osiguravajući da imamo potrebne alate i konfiguracije za nastavak izgradnje platforme.

Sljedeći koraci:

U sljedećem dijelu, fokusirat ćemo se na stvaranje tablica za tutore i klijente s funkcionalnošću korisnika, koristeći Devise za autentifikaciju i upr avljanje korisnicima. Također ćemo postaviti osnovne uloge za ove korisnike.

Plan nastavka:

Sljedeći dio će pokriti postavljanje Devise-a s našim korisničkim ulogama i dodavanje potrebnih migracija baze podataka za tutore i klijente.

Dio 2: Postavljanje korisničkih modela s Devise-om

U ovom dijelu integrirat ćemo Devise za upravljanje korisnicima, definirati naše dvije glavne uloge—tutor i klijent—i postaviti odgovarajuće tablice baze podataka.

Specifikacije:

  • Koristite Devise za upravljanje korisnicima.
  • Stvorite uloge tutor i klijent s funkcionalnošću korisnika.

Koraci:

  • Uspostavite odnose u modelima
    • Modificirajte modele Lesson i Tutor kako biste uključili asocijacije:
    • Isječak koda za model Lesson:
      • class Lesson < ApplicationRecord
          belongs_to :tutor
          belongs_to :category
        end
        
    • Isječak koda za ažuriranje modela Tutor:
      • class Tutor < ApplicationRecord
          has_many :lessons
          belongs_to :user
        end
        
  • Pokrenite migracije
    • Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
    • Naredba:
      • rails db:migrate
        
  • Stvorite kontrolere za kategorije i lekcije
    • Stvorite kontrolere za upravljanje kategorijama i lekcijama, omogućujući CRUD operacije:
    • Naredbe:
      • rails generate controller Categories index new create edit update destroy
        rails generate controller Lessons index new create edit update destroy
        
  • Implementirajte prikaze za upravljanje kategorijama
    • Stvorite prikaze za svaku akciju u kontroleru Kategorije kako biste omogućili korisnicima da stvaraju, uređuju i pregledavaju kategorije:
    • Osigurajte da prikazi koriste obrasce koji su prikladni za ugnežđene kategorije, možda koristeći JavaScript za poboljšanje interakcije korisnika.
  • Postavite rute
    • Definirajte potrebne rute u config/routes.rb za upravljanje kategorijama i lekcijama:
    • Isječak koda:
      • resources :categories do
          resources :lessons
        end
        
  • Ovaj dio je postavio robusni sustav za upravljanje lekcijama i kategorijama, omogućuju ći tutorima da efikasno kategoriziraju svoje lekcije i klijentima da pregledavaju lekcije prema tim kategorijama.

    Sljedeći koraci:

    Sljedeće ćemo razviti funkcionalnost za objavljivanje lekcija od strane tutura unutar njihovih odabranih kategorija i za pregled dostupnih lekcija od strane klijenata. Također ćemo dodati funkcionalnost objave i odabira kategorija za tutore.

    Plan nastavka:

    Sljedeći dio će pokriti integraciju funkcionalnosti objave za tutore, postavljanje prikaza za ove objave, te omogućavanje klijentima da filtriraju i pregledavaju lekcije prema kategoriji.

    Spremni ste prijeći na sljedeći dio? Samo mi javite ili napišite “nastavi” kako biste nastavili s vodičem!

    Dio 5: Implementacija funkcionalnosti objave i pregleda lekcija

    U ovom dijelu razvit ćemo funkcionalnost za objavu lekcija od strane tutura unutar njihovih odabranih kategorija i omogućiti klijentima da pregledaju dostupne lekcije. Ovo će uključivati postavljanje prikaza i osiguranje da objave mogu obavljati samo registrirani tutori.

    Specifikacije:

    • Funkcionalnost objave za tutore.
    • Funkcionalnost pregleda za klijente kako bi vidjeli dostupne lekcije.

    Koraci:

    1. Modificirajte kontroler lekcija
      • Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
      • Isječak koda za create i index akcije:
        • # app/controllers/lessons_controller.rb
          def index
            @lessons = Lesson.includes(:category).where(category_id: params[:category_id])
          end
          
          def new
            @lesson = Lesson.new
          end
          
          def create
            @lesson = current_tutor.lessons.build(lesson_params)
            if @lesson.save
              redirect_to @lesson, notice: 'Lesson was successfully created.'
            else
              render :new
            end
          end
          
          private
          
          def lesson_params
            params.require(:lesson).permit(:title, :description, :category_id)
          end
          
    2. Implementirajte autorizaciju
      • Osigurajte da samo registrirani tutori mogu objavljivati lekcije. Koristite filter before_action za provjeru je li korisnik tutor:
      • Isječak koda:
        • before_action :authenticate_user!
          before_action :check_if_tutor, only: [:new, :create]
          
          private
          
          def check_if_tutor
            redirect_to root_path, alert: 'Access denied.' unless current_user.tutor?
          end
          
    3. Postavite prikaze za lekcije
      • Stvorite prikaze za new i index kako bi tutori dodavali lekcije, a klijenti ih pregledavali:
      • Koristite Tailwind CSS za stiliziranje obrazaca i popisa kako bi bili vizualno privlačni i funkcionalni.

    Ova postavka ne samo da omogućuje tutorima upravljanje svojim lekcijama, već i klijentima da lako pregledavaju dostupne lekcije po kategoriji, poboljšavajući funkcionalnost naše obrazovne platforme.

    Sljedeći koraci:

    Sljedeće ćemo implementirati funkcionalnost rezervacije lekcija, uključujući sustav kalendara gdje klijenti mogu rezervirati lekcije od svojih omiljenih tutura na temelju dostupnih datuma i vremena.

    Plan nastavka:

    Sljedeći dio će se usredotočiti na integraciju kalendara i višestrukog odabira sati za rezervaciju, osiguravajući da tutori mogu definirati svoju dostupnost, a klijenti mogu vršiti rezervacije prema tome.

  • Uspostavite odnose u modelima
    • Modificirajte modele Lesson i Tutor kako biste uključili asocijacije:
    • Isječak koda za model Lesson:
      • class Lesson < ApplicationRecord
          belongs_to :tutor
          belongs_to :category
        end
        
    • Isječak koda za ažuriranje modela Tutor:
      • class Tutor < ApplicationRecord
          has_many :lessons
          belongs_to :user
        end
        
  • Pokrenite migracije
    • Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
    • Naredba:
      • rails db:migrate
        
  • Stvorite kontrolere za kategorije i lekcije
    • Stvorite kontrolere za upravljanje kategorijama i lekcijama, omogućujući CRUD operacije:
    • Naredbe:
      • rails generate controller Categories index new create edit update destroy
        rails generate controller Lessons index new create edit update destroy
        
  • Implementirajte prikaze za upravljanje kategorijama
    • Stvorite prikaze za svaku akciju u kontroleru Kategorije kako biste omogućili korisnicima da stvaraju, uređuju i pregledavaju kategorije:
    • Osigurajte da prikazi koriste obrasce koji su prikladni za ugnežđene kategorije, možda koristeći JavaScript za poboljšanje interakcije korisnika.
  • Postavite rute
    • Definirajte potrebne rute u config/routes.rb za upravljanje kategorijama i lekcijama:
    • Isječak koda:
      • resources :categories do
          resources :lessons
        end
        
  • Ovaj dio je postavio robusni sustav za upravljanje lekcijama i kategorijama, omogućuju ći tutorima da efikasno kategoriziraju svoje lekcije i klijentima da pregledavaju lekcije prema tim kategorijama.

    Sljedeći koraci:

    Sljedeće ćemo razviti funkcionalnost za objavljivanje lekcija od strane tutura unutar njihovih odabranih kategorija i za pregled dostupnih lekcija od strane klijenata. Također ćemo dodati funkcionalnost objave i odabira kategorija za tutore.

    Plan nastavka:

    Sljedeći dio će pokriti integraciju funkcionalnosti objave za tutore, postavljanje prikaza za ove objave, te omogućavanje klijentima da filtriraju i pregledavaju lekcije prema kategoriji.

    Spremni ste prijeći na sljedeći dio? Samo mi javite ili napišite “nastavi” kako biste nastavili s vodičem!

    Dio 5: Implementacija funkcionalnosti objave i pregleda lekcija

    U ovom dijelu razvit ćemo funkcionalnost za objavu lekcija od strane tutura unutar njihovih odabranih kategorija i omogućiti klijentima da pregledaju dostupne lekcije. Ovo će uključivati postavljanje prikaza i osiguranje da objave mogu obavljati samo registrirani tutori.

    Specifikacije:

    • Funkcionalnost objave za tutore.
    • Funkcionalnost pregleda za klijente kako bi vidjeli dostupne lekcije.

    Koraci:

    1. Modificirajte kontroler lekcija
      • Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
      • Isječak koda za create i index akcije:
        • # app/controllers/lessons_controller.rb
          def index
            @lessons = Lesson.includes(:category).where(category_id: params[:category_id])
          end
          
          def new
            @lesson = Lesson.new
          end
          
          def create
            @lesson = current_tutor.lessons.build(lesson_params)
            if @lesson.save
              redirect_to @lesson, notice: 'Lesson was successfully created.'
            else
              render :new
            end
          end
          
          private
          
          def lesson_params
            params.require(:lesson).permit(:title, :description, :category_id)
          end
          
    2. Implementirajte autorizaciju
      • Osigurajte da samo registrirani tutori mogu objavljivati lekcije. Koristite filter before_action za provjeru je li korisnik tutor:
      • Isječak koda:
        • before_action :authenticate_user!
          before_action :check_if_tutor, only: [:new, :create]
          
          private
          
          def check_if_tutor
            redirect_to root_path, alert: 'Access denied.' unless current_user.tutor?
          end
          
    3. Postavite prikaze za lekcije
      • Stvorite prikaze za new i index kako bi tutori dodavali lekcije, a klijenti ih pregledavali:
      • Koristite Tailwind CSS za stiliziranje obrazaca i popisa kako bi bili vizualno privlačni i funkcionalni.

    Ova postavka ne samo da omogućuje tutorima upravljanje svojim lekcijama, već i klijentima da lako pregledavaju dostupne lekcije po kategoriji, poboljšavajući funkcionalnost naše obrazovne platforme.

    Sljedeći koraci:

    Sljedeće ćemo implementirati funkcionalnost rezervacije lekcija, uključujući sustav kalendara gdje klijenti mogu rezervirati lekcije od svojih omiljenih tutura na temelju dostupnih datuma i vremena.

    Plan nastavka:

    Sljedeći dio će se usredotočiti na integraciju kalendara i višestrukog odabira sati za rezervaciju, osiguravajući da tutori mogu definirati svoju dostupnost, a klijenti mogu vršiti rezervacije prema tome.

    1. Generirajte model kategorije
      • Naredba:
        • rails generate model Category name:string parent_id:integer:index
          
    2. Postavite samo-referentnu asocijaciju kategorija
      • Uredite model Category kako biste uključili samo-referentne asocijacije:
      • Isječak koda:
        • class Category < ApplicationRecord
            has_many :subcategories, class_name: "Category", foreign_key: "parent_id"
            belongs_to :parent_category, class_name: "Category", optional: true
          end
          
    3. Generirajte model lekcije
      • Naredba:
        • rails generate model Lesson title:string description:text tutor_id:integer:index category_id:integer:index
          
    4. Uspostavite odnose u modelima
      • Modificirajte modele Lesson i Tutor kako biste uključili asocijacije:
      • Isječak koda za model Lesson:
        • class Lesson < ApplicationRecord
            belongs_to :tutor
            belongs_to :category
          end
          
      • Isječak koda za ažuriranje modela Tutor:
        • class Tutor < ApplicationRecord
            has_many :lessons
            belongs_to :user
          end
          
    5. Pokrenite migracije
      • Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
      • Naredba:
        • rails db:migrate
          
    6. Stvorite kontrolere za kategorije i lekcije
      • Stvorite kontrolere za upravljanje kategorijama i lekcijama, omogućujući CRUD operacije:
      • Naredbe:
        • rails generate controller Categories index new create edit update destroy
          rails generate controller Lessons index new create edit update destroy
          
    7. Implementirajte prikaze za upravljanje kategorijama
      • Stvorite prikaze za svaku akciju u kontroleru Kategorije kako biste omogućili korisnicima da stvaraju, uređuju i pregledavaju kategorije:
      • Osigurajte da prikazi koriste obrasce koji su prikladni za ugnežđene kategorije, možda koristeći JavaScript za poboljšanje interakcije korisnika.
    8. Postavite rute
      • Definirajte potrebne rute u config/routes.rb za upravljanje kategorijama i lekcijama:
      • Isječak koda:
        • resources :categories do
            resources :lessons
          end
          

    Ovaj dio je postavio robusni sustav za upravljanje lekcijama i kategorijama, omogućuju ći tutorima da efikasno kategoriziraju svoje lekcije i klijentima da pregledavaju lekcije prema tim kategorijama.

    Sljedeći koraci:

    Sljedeće ćemo razviti funkcionalnost za objavljivanje lekcija od strane tutura unutar njihovih odabranih kategorija i za pregled dostupnih lekcija od strane klijenata. Također ćemo dodati funkcionalnost objave i odabira kategorija za tutore.

    Plan nastavka:

    Sljedeći dio će pokriti integraciju funkcionalnosti objave za tutore, postavljanje prikaza za ove objave, te omogućavanje klijentima da filtriraju i pregledavaju lekcije prema kategoriji.

    Spremni ste prijeći na sljedeći dio? Samo mi javite ili napišite “nastavi” kako biste nastavili s vodičem!

    Dio 5: Implementacija funkcionalnosti objave i pregleda lekcija

    U ovom dijelu razvit ćemo funkcionalnost za objavu lekcija od strane tutura unutar njihovih odabranih kategorija i omogućiti klijentima da pregledaju dostupne lekcije. Ovo će uključivati postavljanje prikaza i osiguranje da objave mogu obavljati samo registrirani tutori.

    Specifikacije:

    • Funkcionalnost objave za tutore.
    • Funkcionalnost pregleda za klijente kako bi vidjeli dostupne lekcije.

    Koraci:

    1. Modificirajte kontroler lekcija
      • Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
      • Isječak koda za create i index akcije:
        • # app/controllers/lessons_controller.rb
          def index
            @lessons = Lesson.includes(:category).where(category_id: params[:category_id])
          end
          
          def new
            @lesson = Lesson.new
          end
          
          def create
            @lesson = current_tutor.lessons.build(lesson_params)
            if @lesson.save
              redirect_to @lesson, notice: 'Lesson was successfully created.'
            else
              render :new
            end
          end
          
          private
          
          def lesson_params
            params.require(:lesson).permit(:title, :description, :category_id)
          end
          
    2. Implementirajte autorizaciju
      • Osigurajte da samo registrirani tutori mogu objavljivati lekcije. Koristite filter before_action za provjeru je li korisnik tutor:
      • Isječak koda:
        • before_action :authenticate_user!
          before_action :check_if_tutor, only: [:new, :create]
          
          private
          
          def check_if_tutor
            redirect_to root_path, alert: 'Access denied.' unless current_user.tutor?
          end
          
    3. Postavite prikaze za lekcije
      • Stvorite prikaze za new i index kako bi tutori dodavali lekcije, a klijenti ih pregledavali:
      • Koristite Tailwind CSS za stiliziranje obrazaca i popisa kako bi bili vizualno privlačni i funkcionalni.

    Ova postavka ne samo da omogućuje tutorima upravljanje svojim lekcijama, već i klijentima da lako pregledavaju dostupne lekcije po kategoriji, poboljšavajući funkcionalnost naše obrazovne platforme.

    Sljedeći koraci:

    Sljedeće ćemo implementirati funkcionalnost rezervacije lekcija, uključujući sustav kalendara gdje klijenti mogu rezervirati lekcije od svojih omiljenih tutura na temelju dostupnih datuma i vremena.

    Plan nastavka:

    Sljedeći dio će se usredotočiti na integraciju kalendara i višestrukog odabira sati za rezervaciju, osiguravajući da tutori mogu definirati svoju dostupnost, a klijenti mogu vršiti rezervacije prema tome.

    1. Dodajte Devise u Gemfile
      • Naziv i lokacija: Gemfile
      • Dodajte ovu liniju:
    2. Bundle Install i inicijalizacija Devise-a
      • Pokrenite sljedeće naredbe u vašem terminalu:
    3. Konfigurirajte Devise
      • Upute i postavke konfiguracije bit će ispisane u vašem terminalu. Pratite ih za konfiguraciju action mailera u config/environments/development.rb:
    4. Generirajte korisnički model s Devise-om
      • Naredba:
    5. Dodajte ulogu korisnicima
      • Modificirajte migracijsku datoteku stvorenu od Devise-a (potražite datoteku pod db/migrate/ čiji naziv počinje vremenskom oznakom i uključuje devise_create_users.rb):
    6. Stvorite tablice za tutore i klijente
      • Naziv i lokacija: db/migrate/YYYYMMDDHHMMSS_create_tutors.rb i db/migrate/YYYYMMDDHHMMSS_create_customers.rb
      • Naredbe za generiranje migracija:
    7. Pokrenite migracije
      • Naredba:
    8. Postavljanje uloga s Enum
      • Naziv i lokacija: app/models/user.rb
      • Isječak koda za definiranje uloga unutar korisničkog modela:

    Ova postavka omogućuje fleksibilan sustav korisnika gdje korisnik može biti tutor ili klijent, koristeći Devise za autentifikaciju i upravljanje.

    Dio 3: Prilagodba Devise-a za račune tutura i klijenata

    U ovom dijelu vodiča, prilagodit ćemo Devise za naš sustav s dvije uloge, stvarajući različite putanje za registraciju i prijavu tutura i klijenata.

    Specifikacije:

    • Prilagođena prijava i registracija za tutore i klijente.

    Koraci:

    1. Generirajte Devise kontrolere
      • Za prilagodbu ponašanja Devise-a, trebat će nam generirati njegove kontrolere.
      • Naredba:
        • rails generate devise:controllers users
          
    2. Konfigurirajte rute za prilagođene kontrolere
      • Naziv i lokacija: config/routes.rb
      • Modificirajte rute kako biste koristili nove kontrolere:
      • Isječak koda:
        • devise_for :users, controllers: {
             sessions: 'users/sessions',
             registrations: 'users/registrations'
          }
          
    3. Odvojene putanje za registraciju
      • Stvorit ćemo odvojene obrasce za registraciju za tutore i klijente. Prvo, prepišite new akciju u users/registrations_controller.rb kako biste provjerili parametar uloge i prikazali različite prikaze:
      • Isječak koda:
        • class Users::RegistrationsController < Devise::RegistrationsController
             def new
                super do |resource|
                   resource.role = params[:role] if params[:role].present?
                end
             end
          end
          
      • Stvorite odvojene prikaze za svaku ulogu u app/views/devise/registrations/ pod imenima new_tutor.html.erb i new_customer.html.erb.
    4. Uvjetno usmjeravanje nakon prijave
      • Prepišite metodu after_sign_up_path_for u users/registrations_controller.rb kako biste preusmjerili korisnike na temelju njihove uloge:
      • Isječak koda:
        • def after_sign_up_path_for(resource)
             resource.tutor? ? tutor_dashboard_path : customer_dashboard_path
          end
          
    5. Stvorite kontrolne ploče za tutore i klijente
      • Naredbe za generiranje kontrolera i prikaza:
      • rails generate controller Tutors dashboard
        rails generate controller Customers dashboard
        
      • Postavite osnovne rute u config/routes.rb:
      • get 'tutor_dashboard', to: 'tutors#dashboard'
        get 'customer_dashboard', to: 'customers#dashboard'
        

    Ova konfiguracija omogućuje nam da zasebno upravljamo računima tutura i klijenata, pružajući svakome prilagođeni obrazac za registraciju i kontrolnu ploču.

    Sljedeći koraci:

    Sljedeće ćemo postaviti modele i kontrolere za lekcije i kategorije, omogućujući tutorima objavljivanje detalja o lekcijama pod određenim kategorijama koje mogu biti roditeljske ili podređene kategorije. Također ćemo raditi na sustavu upravljanja kategorijama.

    Plan nastavka:

    Sljedeći dio će se usredotočiti na stvaranje funkcionalnosti za lekcije i kategorije, uključujući modele baze podataka, asocijacije i podršku za ugnežđene kategorije.

    Dio 4: Postavljanje lekcija i kategorija

    U ovom dijelu postavit ćemo modele i kontrolere za upravljanje lekcijama i kategorijama, omogućujući tutorima objavljivanje detalja o lekcijama pod određenim kategorijama koje mogu biti roditeljske ili podređene kategorije. Ovo će pomoći organizirati lekcije u strukturiranom formatu.

    Specifikacije:

    • Stvorite hijerarhijski sustav kategorija za lekcije.
    • Omogućite tutorima objavljivanje lekcija pod ovim kategorijama.

    Koraci:

    1. Generirajte model kategorije
      • Naredba:
        • rails generate model Category name:string parent_id:integer:index
          
    2. Postavite samo-referentnu asocijaciju kategorija
      • Uredite model Category kako biste uključili samo-referentne asocijacije:
      • Isječak koda:
        • class Category < ApplicationRecord
            has_many :subcategories, class_name: "Category", foreign_key: "parent_id"
            belongs_to :parent_category, class_name: "Category", optional: true
          end
          
    3. Generirajte model lekcije
      • Naredba:
        • rails generate model Lesson title:string description:text tutor_id:integer:index category_id:integer:index
          
    4. Uspostavite odnose u modelima
      • Modificirajte modele Lesson i Tutor kako biste uključili asocijacije:
      • Isječak koda za model Lesson:
        • class Lesson < ApplicationRecord
            belongs_to :tutor
            belongs_to :category
          end
          
      • Isječak koda za ažuriranje modela Tutor:
        • class Tutor < ApplicationRecord
            has_many :lessons
            belongs_to :user
          end
          
    5. Pokrenite migracije
      • Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
      • Naredba:
        • rails db:migrate
          
    6. Stvorite kontrolere za kategorije i lekcije
      • Stvorite kontrolere za upravljanje kategorijama i lekcijama, omogućujući CRUD operacije:
      • Naredbe:
        • rails generate controller Categories index new create edit update destroy
          rails generate controller Lessons index new create edit update destroy
          
    7. Implementirajte prikaze za upravljanje kategorijama
      • Stvorite prikaze za svaku akciju u kontroleru Kategorije kako biste omogućili korisnicima da stvaraju, uređuju i pregledavaju kategorije:
      • Osigurajte da prikazi koriste obrasce koji su prikladni za ugnežđene kategorije, možda koristeći JavaScript za poboljšanje interakcije korisnika.
    8. Postavite rute
      • Definirajte potrebne rute u config/routes.rb za upravljanje kategorijama i lekcijama:
      • Isječak koda:
        • resources :categories do
            resources :lessons
          end
          

    Ovaj dio je postavio robusni sustav za upravljanje lekcijama i kategorijama, omogućuju ći tutorima da efikasno kategoriziraju svoje lekcije i klijentima da pregledavaju lekcije prema tim kategorijama.

    Sljedeći koraci:

    Sljedeće ćemo razviti funkcionalnost za objavljivanje lekcija od strane tutura unutar njihovih odabranih kategorija i za pregled dostupnih lekcija od strane klijenata. Također ćemo dodati funkcionalnost objave i odabira kategorija za tutore.

    Plan nastavka:

    Sljedeći dio će pokriti integraciju funkcionalnosti objave za tutore, postavljanje prikaza za ove objave, te omogućavanje klijentima da filtriraju i pregledavaju lekcije prema kategoriji.

    Spremni ste prijeći na sljedeći dio? Samo mi javite ili napišite “nastavi” kako biste nastavili s vodičem!

    Dio 5: Implementacija funkcionalnosti objave i pregleda lekcija

    U ovom dijelu razvit ćemo funkcionalnost za objavu lekcija od strane tutura unutar njihovih odabranih kategorija i omogućiti klijentima da pregledaju dostupne lekcije. Ovo će uključivati postavljanje prikaza i osiguranje da objave mogu obavljati samo registrirani tutori.

    Specifikacije:

    • Funkcionalnost objave za tutore.
    • Funkcionalnost pregleda za klijente kako bi vidjeli dostupne lekcije.

    Koraci:

    1. Modificirajte kontroler lekcija
      • Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
      • Isječak koda za create i index akcije:
        • # app/controllers/lessons_controller.rb
          def index
            @lessons = Lesson.includes(:category).where(category_id: params[:category_id])
          end
          
          def new
            @lesson = Lesson.new
          end
          
          def create
            @lesson = current_tutor.lessons.build(lesson_params)
            if @lesson.save
              redirect_to @lesson, notice: 'Lesson was successfully created.'
            else
              render :new
            end
          end
          
          private
          
          def lesson_params
            params.require(:lesson).permit(:title, :description, :category_id)
          end
          
    2. Implementirajte autorizaciju
      • Osigurajte da samo registrirani tutori mogu objavljivati lekcije. Koristite filter before_action za provjeru je li korisnik tutor:
      • Isječak koda:
        • before_action :authenticate_user!
          before_action :check_if_tutor, only: [:new, :create]
          
          private
          
          def check_if_tutor
            redirect_to root_path, alert: 'Access denied.' unless current_user.tutor?
          end
          
    3. Postavite prikaze za lekcije
      • Stvorite prikaze za new i index kako bi tutori dodavali lekcije, a klijenti ih pregledavali:
      • Koristite Tailwind CSS za stiliziranje obrazaca i popisa kako bi bili vizualno privlačni i funkcionalni.

    Ova postavka ne samo da omogućuje tutorima upravljanje svojim lekcijama, već i klijentima da lako pregledavaju dostupne lekcije po kategoriji, poboljšavajući funkcionalnost naše obrazovne platforme.

    Sljedeći koraci:

    Sljedeće ćemo implementirati funkcionalnost rezervacije lekcija, uključujući sustav kalendara gdje klijenti mogu rezervirati lekcije od svojih omiljenih tutura na temelju dostupnih datuma i vremena.

    Plan nastavka:

    Sljedeći dio će se usredotočiti na integraciju kalendara i višestrukog odabira sati za rezervaciju, osiguravajući da tutori mogu definirati svoju dostupnost, a klijenti mogu vršiti rezervacije prema tome.


    Posted

    in

    by

    Tags: