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:
- 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
- Konfigurirajte bazu podataka
- Naziv i lokacija:
config/database.yml
- Isječak koda:
- Naziv i lokacija:
- Instalirajte Tailwind CSS
- Nakon postavljanja vaše Rails aplikacije, osigurajte da instalirate Tailwind CSS slijedeći službeni Vodič za instalaciju TailwindCSS za Rails.
- 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
iklijent
s funkcionalnošću korisnika.
Koraci:
- Modificirajte modele
Lesson
iTutor
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
- Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
- Naredba:
rails db:migrate
- 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
- 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.
- 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:
- Modificirajte kontroler lekcija
- Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
- Isječak koda za
create
iindex
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
- 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
- Postavite prikaze za lekcije
- Stvorite prikaze za
new
iindex
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.
- Stvorite prikaze za
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.
- Modificirajte modele
Lesson
iTutor
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
- Nakon postavljanja modela s njihovim asocijacijama, izvršite migracije kako biste ažurirali bazu podataka:
- Naredba:
rails db:migrate
- 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
- 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.
- 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:
- Modificirajte kontroler lekcija
- Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
- Isječak koda za
create
iindex
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
- 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
- Postavite prikaze za lekcije
- Stvorite prikaze za
new
iindex
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.
- Stvorite prikaze za
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.
- Generirajte model kategorije
- Naredba:
rails generate model Category name:string parent_id:integer:index
- Naredba:
- 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
- Uredite model
- Generirajte model lekcije
- Naredba:
rails generate model Lesson title:string description:text tutor_id:integer:index category_id:integer:index
- Naredba:
- Uspostavite odnose u modelima
- Modificirajte modele
Lesson
iTutor
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
- Modificirajte modele
- 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
- Definirajte potrebne rute u
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:
- Modificirajte kontroler lekcija
- Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
- Isječak koda za
create
iindex
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
- 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
- Postavite prikaze za lekcije
- Stvorite prikaze za
new
iindex
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.
- Stvorite prikaze za
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.
- Dodajte Devise u Gemfile
- Naziv i lokacija:
Gemfile
- Dodajte ovu liniju:
- Naziv i lokacija:
- Bundle Install i inicijalizacija Devise-a
- Pokrenite sljedeće naredbe u vašem terminalu:
- Konfigurirajte Devise
- Upute i postavke konfiguracije bit će ispisane u vašem terminalu. Pratite ih za konfiguraciju action mailera u
config/environments/development.rb
:
- Upute i postavke konfiguracije bit će ispisane u vašem terminalu. Pratite ih za konfiguraciju action mailera u
- Generirajte korisnički model s Devise-om
- Naredba:
- Dodajte ulogu korisnicima
- Modificirajte migracijsku datoteku stvorenu od Devise-a (potražite datoteku pod
db/migrate/
čiji naziv počinje vremenskom oznakom i uključujedevise_create_users.rb
):
- Modificirajte migracijsku datoteku stvorenu od Devise-a (potražite datoteku pod
- Stvorite tablice za tutore i klijente
- Naziv i lokacija:
db/migrate/YYYYMMDDHHMMSS_create_tutors.rb
idb/migrate/YYYYMMDDHHMMSS_create_customers.rb
- Naredbe za generiranje migracija:
- Naziv i lokacija:
- Pokrenite migracije
- Naredba:
- Postavljanje uloga s Enum
- Naziv i lokacija:
app/models/user.rb
- Isječak koda za definiranje uloga unutar korisničkog modela:
- Naziv i lokacija:
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:
- Generirajte Devise kontrolere
- Za prilagodbu ponašanja Devise-a, trebat će nam generirati njegove kontrolere.
- Naredba:
rails generate devise:controllers users
- 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' }
- Naziv i lokacija:
- Odvojene putanje za registraciju
- Stvorit ćemo odvojene obrasce za registraciju za tutore i klijente. Prvo, prepišite
new
akciju uusers/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 imenimanew_tutor.html.erb
inew_customer.html.erb
.
- Stvorit ćemo odvojene obrasce za registraciju za tutore i klijente. Prvo, prepišite
- Uvjetno usmjeravanje nakon prijave
- Prepišite metodu
after_sign_up_path_for
uusers/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
- Prepišite metodu
- 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:
- Generirajte model kategorije
- Naredba:
rails generate model Category name:string parent_id:integer:index
- Naredba:
- 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
- Uredite model
- Generirajte model lekcije
- Naredba:
rails generate model Lesson title:string description:text tutor_id:integer:index category_id:integer:index
- Naredba:
- Uspostavite odnose u modelima
- Modificirajte modele
Lesson
iTutor
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
- Modificirajte modele
- 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
- Definirajte potrebne rute u
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:
- Modificirajte kontroler lekcija
- Dodajte akcije u kontroleru Lekcija za rukovanje stvaranjem i popisom lekcija specifičnih za kategorije:
- Isječak koda za
create
iindex
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
- 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
- Postavite prikaze za lekcije
- Stvorite prikaze za
new
iindex
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.
- Stvorite prikaze za
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.