17. Ruby on Rails, част 2

17. Ruby on Rails, част 2

17. Ruby on Rails, част 2

20 декември 2011

За какво говорихме предния път?

Какво ще правим днес?

Имайте предвид

Генератори в Rails

Житейският път на един request в Rails

Rack

Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.

Примерно Rack-приложение

app = -> do |env|
  body = "Hello, World!"
  [
    200,
    {
      "Content-Type"   => "text/plain",
      "Content-Length" => body.length.to_s,
    },
    [body]
  ]
end

run app

Житейският път на един request в Rails (2)

Примерното приложение

Промени (1)

с връзки до commit-ите в GitHub

  1. Премахнахме ненужен код в QuizzesController, защото не ни е необходимо да рендерираме друго, освен HTML
  2. Добавихме валидация в модела Quiz
    Можете да намерите документация за валидациите в ActiveModel тук
  3. Генерирахме нов scaffold за ресурси от тип questions: модел Question, контролер, изгледи, миграция, тестове
    Използвахме командата: bundle exec rails g question title:string position:integer
  4. Добавихме валидации и в модела Question
  5. Направихме връзка между Quiz и Question
    Детайлна информация относно релациите (асоциации) в Rails ще откриете тук

Промени (2)

  1. Направихме разумното нещо — подчинихме Question на Quiz
    Това изискваше от нас да направим дефиниция на вложен ресурс в config/routes.rb и да променим QuestionsController и файловете с изгледите (views) за въпросите така, че да използват правилно новите nested URL-и
  2. По-детайлно обяснение за вложени ресурси и изобщо за целия маршрутизатор в Rails ще откриете тук
  3. В предната промяна се наложи също така да ползваме before_filter, за да изпълним код преди извикването на всеки action в QuestionsController; научете повече за филтрите в Rails тук
  4. В същата секция от документацията на Rails ще намерите информация за params, сесии и бисквитки, различни rendering-опции, прихващане на някои грешки и прочее
  5. Премахнахме ненужния ни rendering-код от QuestionsController, за да опростим нещата
    С това приключихме този етап на промени

"Автоматичен" админ-панел в Rails

или как да разширим допълнително това, което Rails ни дава

Добавяне на gem-зависимост към нашето приложение

инсталация на Active Admin

Подкарване на Active Admin

Добавяне на ресурси към Active Admin

Резултатът

от нашето примерно приложение

Сайтът на курса

Не забравяйте:

Сайтът на курса е написан на Rails; можете да видите кода му в GitHub

Документация и ресурси

Въпроси