Ruby on Rails - Изграждане на просто приложение
И така, вие и аз вече научихме как да инсталираме Ruby on Rails, подредихме най-основните команди за създаване на контролери и модели. И днес ще създадем просто приложение, с което можем да разглобим и разберем основите на работата в Rails. Няма да правим сложно приложение, ще създадем просто To-do приложение със списък от задачи и в бъдеще ще добавим нова функционалност. Всеки създава мениджъри на задачи, защо не направим 🙂
Създаваме нашето приложение с командата rails new TodoApp и отиваме в папката TodoApp, която се появява, изпълняваме командата за инсталиране на пакета. Приложението е създадено, сега трябва да направим поне минимално описание на функциите, за да разберем поне минимално принципа на нашето приложение.
И така, с помощта наTodoApp можем:
- Добавяне, изтриване, редактиране на бележки
- Отбележете завършване
- Показване само на изпълнени или неуспешни задачи
Това ще е достатъчно за сега. В бъдеще ще увеличим функционалността, като по този начин ще научим колко лесно е да промените приложението.
Създаване на модел
Моделът е как ще изглежда обектът в базата данни, какви полета ще има и как ще се наричат. Нека създадем моделtask с полетатаtitle,text,status : rails g model task title:string text:text status:boolean . Отворете файла в директорията db/migrate и добавете стойността по подразбиране 0 към полето за състояние.
Моделът е готов, сега трябва да прехвърлите модела в базата данни, изпълнете: rake db:migrate. Миграцията се създава автоматично при създаване на модел, а предишната команда прилага всички настройки в базата данни - създаване на таблици и полета, ръководени от инструкциите, описани във файловете, намиращи се вdb/migrate директории.
Контролер и изгледи
Контролерът е необходим, за да обработи заявката на потребителя, да избере необходимите данни и да ги предаде през изгледа на потребителя. Създаването на контролер става с командата: rails g controller Tasks . Тази команда ще създаде контролен файл app/controllers/tasks_controller.rb , в който ще опишем различните действия. Всеки метод, деклариран в този файл, съответства на конкретен изглед.
Затова, на първо място, ще декларираме root изгледа, страницата, която потребителят ще види, когато влезе в сайта. Отворете папката app/views/tasks и създайте файл index.html.erb в нея. Нека напишем малко текст в този файл, няма значение, достатъчно е за теста. Отворете файла на контролера и декларирайте метод с име index.
Пренасяне на файла във формуляра:
Файловете са създадени, методът е там, но самата страница няма да се покаже, след като отворите сайта, приложението все още трябва да посочи кой изглед да използва като главна страница. Нека отворим файла config/routes.rb и го пренесем във формата:
Тук всичко е изключително просто, root ни казва, че този изглед ще се използва като главна страница и потребителите ще го виждат, когато влязат в сайта. Tasks е контролер, а index е метод на контролер.
Стартираме сървъра с командата - rails s и отваряме url http://localhost:3000/ . Трябва да имате страница с текста, който сте посочили във файла app/views/tasks/index.html.erb, ако всичко е направено правилно 🙂
Създаване на формуляр
Формата за добавяне ще бъде много проста, има 2 полета, това са Заглавие и Текст. Тъй като почти всички наши действия ще се извършват на главната страница, ще добавим формата към файла index.html.erb.
Във файлконтролер, редактирайте метода на индекса, за да изглежда така:
С това ще създадем и поставим обекта на нашата задача в променлива и ще можем да работим с него в бъдеще.
Добавете ред към файла config/routes.rb:
Ресурсът е необходим за създаване на правилните маршрути за нашия контролер. Въпреки че няма да се занимаваме с това, ще се занимаваме с него по-подробно в бъдеще.
Нека презаредим страницата и видим формуляра, но той все още не може да добави данни към базата данни, за това трябва да създадем няколко метода в контролера.
Добавяне на бележки
За да можем да добавяме нови задачи, използвайки нашата форма, трябва да създадем няколко метода в контролера на задачите. Привеждаме файла app/controllers/tasks_controller.rb в следния формуляр:
Методът create е отговорен за запазването на данните, получени от формата, в базата данни. Частният метод tasks_params показва кои параметри (полета на формуляр) могат да бъдат добавяни/променени. С други думи, когато се опитвате да прехвърлите параметър, който не е в списъка permit(). При успешно запазване можем да покажем съобщение на страницата, но все още не се нуждаем от това. Сега задачите могат да се записват в базата данни.
Както можете да видите, в индексния метод добавих реда @tasks = Task.all. Необходимо е да се показват всички задачи на тази страница, ако искате да показвате всички задачи на различно място, ще трябва да добавите такъв ред към друг метод на контролера.
Дисплей на задачите
Отворете файла app/views/tasks/index.html.erb и добавете следното:
Най-простият изход на информация, ние няма да се занимаваме с дизайна, можете да го направите сами 🙂 В цикъла ние просто показваме заглавието и текста на бележката.