Добавено на: 2010-05-06 21:45:45
Framework-овете имат най-просто казано controller-view-model архитектура.
В контролера стои логиката. View-то е мястото чрез което показвате всичко на екрана.
Модела е контейнер който прави връзка с базата данни и може да се използва по различни начини. Това е най-общо казано архитектурата при всички frameworko-ове. Разделяй логиката от визуализацията както и заявките към базата данни ги пиши в модела.
От тук на сетне всичко е за ruby on rails макар повечето неща по логиката са еднакви и с php framework-овете.
Да кажем, че искаме да изведем „Моята първа програма” на екрана.
Правим си контролер под конзола или cmd от windows-a за тези които нямат макове.
Това значи, че правите контролер с име home и view – index След което имате в контролера:
Това в папка /app/controller. В папка /app/view/home/ имате index.html.erb това е view то което се отнася към def index в контролера. И нека най-накрая изведем нещо на екрана.
В view-то(index.html.erb):
Какво направихме току що. Присвоихме на променлива @nqkakva_promenliva стринг който показваме на екрана чрез view-то.
Най-общо казано това е алгоритъма на действие.
В rails имаме миграция на базата което го няма при повечето framework-ове. Да предположим, че искаме да си направим блог. Ще ни трябва таблица с articles. Нека я създадем:
Воала! Вече имаме таблица.
Но да не навлизам в подробности.
Важно е да разберете, че условията на заявките към базата е добре да се правят в модела. Примерно ако искаме да покажем всички резултати от таблица article където title е равно на стринга „Моята първа статия”. Вместо да напишем в контролера:
Ние правим следното. В /app/model имате файл article.rb в който пишем:
При което в контролера имаме само:
Целта на процедурата е да имаме максимално изчистен код и малки кратки изрази които ги разбираме. Ако правите десетки сайтове и то големи когато искате да преправите първия ви трябва ясен четлив код за да не губите време и да се чудите какво сте правили. Всяко нещо трябва да си е на мястото.
Статията не е за да влизам в детайли за това и ще продължа по накратко.
Имаме още helper-и в архитектурата на framework-овете. Това са файлове който подпомагат view-тата по определен начин. За всеки контролер имате отделен хелпър както и един глобален application_helper.rb. Намират се в папка /app/helpers
Пример:
В view имаме:
В хелпъра имаме:
Намирането на първия запис може да се прави и така.
При което на екрана ще видим заглавието на статия едно. По принцип не е нужно да има return. Но за това по натам. Хелпърите имат голямо приложение и са изключително важни.
В директория public от главното дърво ви се намира директорията която е видима. Там са снимките от сайта ви. Там са style.css,jquery и т.н. При rails тези неща си имат своите директории строго определени от framework-a. Разбира се променянето им не води до лоши последствия, но няма нужда да се прави.
Последното нещо което е важно да знаете за framework-овете е така наречения layout. Намира се в папка /app/view/layouts. По конкретно за layout-ите ще поговорим по натам. За сега важно е да знаете, че каквото има във файла application.html.erb се показва винаги на сайта. В тези файлове или файл се слага header-a + footer-а. Съдържанието излиза от view-tata или contentа.
Предимството на framework-а е огромно при начинаещите програмисти понеже имат ясно разграничение на нещата. Ако не дотам подреден програмист тръгне да пише голям сайт без frameworok рискува да влезе в зоната на здрача и да не знае кой файл къде се намира. При framework-овете този проблем го няма. Винаги знаете къде да търсите и го намирате за секунди.
Препоръчвам ви да хвърлите едно око на http://rubyonrails.org/ и по специално http://rubyonrails.org/screencasts.
От филмчетата ако сте внимателни можете да достигнете доста сериозно ниво.
Все пак ще се сблъскате с редица проблеми на които ще гледам да ви дам отговора в този блог.
Като примерно защо paperclip-а не работи след преместване на сайт от вкъщи на production server, а имаме ImageMagick инсталиран и т.н.
За да не пиша романи е хубаво да погледнете от филмчетата тук http://rubyonrails.org/screencasts как се прави блог за 15 минути. Също и встъпителните поне 6-7 филмчета.
Хубаво е да се прочете и нещо за ruby, но не е задължително поне в началото.
И за накрая едно готино филмче.
В контролера стои логиката. View-то е мястото чрез което показвате всичко на екрана.
Модела е контейнер който прави връзка с базата данни и може да се използва по различни начини. Това е най-общо казано архитектурата при всички frameworko-ове. Разделяй логиката от визуализацията както и заявките към базата данни ги пиши в модела.
От тук на сетне всичко е за ruby on rails макар повечето неща по логиката са еднакви и с php framework-овете.
Да кажем, че искаме да изведем „Моята първа програма” на екрана.
Правим си контролер под конзола или cmd от windows-a за тези които нямат макове.
Ruby script\generate controller home index
Това значи, че правите контролер с име home и view – index След което имате в контролера:
class HomeController < ApplicationController
def index
end
end
Това в папка /app/controller. В папка /app/view/home/ имате index.html.erb това е view то което се отнася към def index в контролера. И нека най-накрая изведем нещо на екрана.
class HomeController < ApplicationController
def index
@nqkakva_promenliva = „Моята първа програма”
end
end
В view-то(index.html.erb):
<%= @nqkakva_promenliva %>
Какво направихме току що. Присвоихме на променлива @nqkakva_promenliva стринг който показваме на екрана чрез view-то.
Най-общо казано това е алгоритъма на действие.
В rails имаме миграция на базата което го няма при повечето framework-ове. Да предположим, че искаме да си направим блог. Ще ни трябва таблица с articles. Нека я създадем:
Ruby script/generate model article title:string body:text
Rake db:migrate
Воала! Вече имаме таблица.
Но да не навлизам в подробности.
Важно е да разберете, че условията на заявките към базата е добре да се правят в модела. Примерно ако искаме да покажем всички резултати от таблица article където title е равно на стринга „Моята първа статия”. Вместо да напишем в контролера:
@articles = article.find(:all, :conditions => [‘title =?’,”Моята първа статия”])
Ние правим следното. В /app/model имате файл article.rb в който пишем:
named_scope :statia, :conditions => [‘title =?’,”Моята първа статия”]
При което в контролера имаме само:
@articles = article.statia
Целта на процедурата е да имаме максимално изчистен код и малки кратки изрази които ги разбираме. Ако правите десетки сайтове и то големи когато искате да преправите първия ви трябва ясен четлив код за да не губите време и да се чудите какво сте правили. Всяко нещо трябва да си е на мястото.
Статията не е за да влизам в детайли за това и ще продължа по накратко.
Имаме още helper-и в архитектурата на framework-овете. Това са файлове който подпомагат view-тата по определен начин. За всеки контролер имате отделен хелпър както и един глобален application_helper.rb. Намират се в папка /app/helpers
Пример:
В view имаме:
pokaji_mi_purvata_statia(1)
В хелпъра имаме:
def pokaji_mi_purvata_statia(id)
articles = article.find(:all, :conditions => ['id =?',id])
return articles.title
end
Намирането на първия запис може да се прави и така.
articles = article.first
При което на екрана ще видим заглавието на статия едно. По принцип не е нужно да има return. Но за това по натам. Хелпърите имат голямо приложение и са изключително важни.
В директория public от главното дърво ви се намира директорията която е видима. Там са снимките от сайта ви. Там са style.css,jquery и т.н. При rails тези неща си имат своите директории строго определени от framework-a. Разбира се променянето им не води до лоши последствия, но няма нужда да се прави.
Последното нещо което е важно да знаете за framework-овете е така наречения layout. Намира се в папка /app/view/layouts. По конкретно за layout-ите ще поговорим по натам. За сега важно е да знаете, че каквото има във файла application.html.erb се показва винаги на сайта. В тези файлове или файл се слага header-a + footer-а. Съдържанието излиза от view-tata или contentа.
Предимството на framework-а е огромно при начинаещите програмисти понеже имат ясно разграничение на нещата. Ако не дотам подреден програмист тръгне да пише голям сайт без frameworok рискува да влезе в зоната на здрача и да не знае кой файл къде се намира. При framework-овете този проблем го няма. Винаги знаете къде да търсите и го намирате за секунди.
Препоръчвам ви да хвърлите едно око на http://rubyonrails.org/ и по специално http://rubyonrails.org/screencasts.
От филмчетата ако сте внимателни можете да достигнете доста сериозно ниво.
Все пак ще се сблъскате с редица проблеми на които ще гледам да ви дам отговора в този блог.
Като примерно защо paperclip-а не работи след преместване на сайт от вкъщи на production server, а имаме ImageMagick инсталиран и т.н.
За да не пиша романи е хубаво да погледнете от филмчетата тук http://rubyonrails.org/screencasts как се прави блог за 15 минути. Също и встъпителните поне 6-7 филмчета.
Хубаво е да се прочете и нещо за ruby, но не е задължително поне в началото.
И за накрая едно готино филмче.
