User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

rubyonrails:как-работает-приложение-ror

Ресурсы

Приложение ROR состоит из ресурсов.
Ресурс включает в себя модель, представление и контроллер. Их описания находятся в файлах в папках приложения ./app/models, ./app/views, ./app/controllers.

Соответствие URL сайта и действий (методов) контроллеров прописывается в маршрутном файле - ./config/routes.rb

Модель (model)

Модель (model) - ….

Контроллер (controller)

Контроллер (controller) - это контейнер для страниц. Когда пользователь подключается к сайту - он взаимодейcтвует с контроллером. То есть - вызывает методы Ruby, прописанные в файле контроллера.
КОнтроллр генерируется командой:

$ rails generate controller Pages home contact
      create  app/controllers/pages_controller.rb
       route  get "pages/contact"
       route  get "pages/home"
      invoke  erb
      create    app/views/pages
      create    app/views/pages/home.html.erb
      create    app/views/pages/contact.html.erb
      invoke  rspec
      create    spec/controllers/pages_controller_spec.rb
      create    spec/views/pages
      create    spec/views/pages/home.html.erb_spec.rb
      create    spec/views/pages/contact.html.erb_spec.rb
      invoke  helper
      create    app/helpers/pages_helper.rb
      invoke    rspec

В листинге видно, какие файлы создаются.

Представления (views)

Представление (view) - это описание внешнего вида ресурса в HTML CSS и встроенном Ruby.

Порядок работы приложения RoR

1. Пользователь отправляет запрос к какому-то URL. Например http://sitename/pages/home. То есть запрашивает страницу home ресурса pages.
2. Rails получает запрос и ищет в маршрутном файле ./config/routes.rb машрут типа:

get "pages/home"

Если машрута нет, то будет ошибка No route matches.
3. Если машрут есть, то выполняется метод (действие) контроллера запрошенного ресурса, указанный в маршруте и затем визуализирует соответствующее представление ресурса (view). В данном случае - контроллер pages, метод (действие) - home (из файла ./app/controllers/pages_controller.rb). А представление описано в файле ./app/views/pages/home.html.erb.
4. Отображение представления может использовать общий для страниц каркас, описанный в файле ./app/views/layouts/application.html.erb:

<!DOCTYPE html>
<html>
  <head>
    <title>Ruby on Rails Tutorial Sample App | <%= @title %></title>
    <%= csrf_meta_tag %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

В этом файле описаны общие для всех страниц теги HTML, а строка <%= yield %> Замещается собственным HTML кодом представления который уже не должен включать теги <html> и <head>.

Функции в представлениях

В представлениях могут использоваться функции. Такие функции описаны в виде методов в файле ./app/helpers/application_helper.rb
Например хелпер для корректного отображения Title:

 def title
    base_title = "Ruby on Rails Tutorial Sample App"
    if @title.nil?
      base_title
    else
      "#{base_title} | #{@title}"
    end
  end

В шаблоне страниц употребляется метод title. При вызове метода title проверяется состояние переменной @title (пустая она или нет) и если она непустая, то формируется заголовок страница с ее использованием, а если пустая, то заголовок формируется без нее.

А в отображении в файле шаблона он используется так:

<title><%= title %></title>

Создание страницы вручную

Допустим создан контроллер Pages со страницами home и contact командой:

rails generate controller Pages home contact

И теперь нужно добавить еще страницу about.

Для того чтобы к существующему контроллеру добавить страницу нужно:
1. Прописать маршрут в файле ./config/routes.rb:

get "pages/about"

2. Прописать метод в файле контроллера ./app/controllers/pages_controller.rb:

  def about
  end

3. Создать представление. То есть создать HTML файл ./app/views/pages/about.html.erb.

Discussion

Enter your comment. Wiki syntax is allowed:
K T W G Y
 
rubyonrails/как-работает-приложение-ror.txt · Last modified: 2015/04/09 14:08 (external edit)