Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Все на борт! Введення в Rails 3

  1. Часто використовувані скорочення
  2. Зміни, великі і дрібні
  3. Перше додаток Rails 3
  4. Лістинг 1. Джем попереднього випуску Rails 3 і його залежності
  5. Лістинг 2. Rails-додаток вікі
  6. Лістинг 3. Збір необхідних джемів
  7. Лістинг 4. Запуск утиліти bundle
  8. Лістинг 5. Установка джемів
  9. створення вікі
  10. Лістинг 6. Повний код вікі-додатки
  11. Лістинг 7. Початкова сторінка вікі
  12. Лістинг 8. Перевірка початкової сторінки
  13. Лістинг 9. config / routes.rb (остаточний)
  14. Лістинг 10. Контролер Rails 3
  15. Малюнок 1. Вікі-додаток на Rails 3
  16. Лістинг 11. Контролер Rails 3 цілком
  17. Лістинг 12. Допоміжна функція перекладу посилань
  18. Лістинг 13. Типове уявлення
  19. переведення стрілок
  20. Ресурси для скачування

Наша взаимовыгодная связь https://banwar.org/

За останні два роки середовище розробки додатків Ruby On Rails придбала безліч прихильників в сфері постачальників послуг хостингу і інтернет-послуг, вражаючий набір інструментів розробки, а також широкий спектр додаткових бібліотек - які на сленгу Ruby називаються джемами і плагінами, - розширюють можливості програмного забезпечення. Наприклад, Engine Yard, Heroku і інші компанії пропонують послуги віртуального хостингу програмного забезпечення Rails без всякої головного болю; плагіни з красномовними іменами Oink і Bullet - відповідно можливості економії пам'яті і підвищення продуктивності, а Clearance і Sunspot - готову платформу аутентифікації і швидкий пошук з індексацією.

Часто використовувані скорочення
  • CRUD: Create, read, update, delete - створення, читання, редагування, видалення
  • HTML: Hypertext Markup Language - мова гіпертекстової розмітки
  • REST: Representational State Transfer - передача репрезентативного стану
  • SQL: Structured Query Language - мова структурованих запитів

Спільнота Rails теж розширилося в порівнянні з 2007 роком. Ряди розробників Rails в усьому світі динамічні, завжди готові прийти на допомогу і постійно вдосконалюють програмне забезпечення. Справді, не буде перебільшенням сказати, що підприємницькі кола сповнений рішучості покращувати Rails, і програмісти наввипередки створюють щось нове й краще. Крок за кроком, функції швидко еволюціонують від зародження до практичного використання, зрілості, елегантності і в кінцевому підсумку стають просто необхідними. У багатьох випадках джеми і плагіни, які співтовариство знаходить корисними, закріплюються в ядрі Rails. Саме цей шлях пройшли реляційні запити з іменованими групами умов named scopes - стенографія запитів Rails, - а також вкладені форми, порівняно недавнє додавання, витіснило попередні спроби забезпечити можливість створення і редагування декількох моделей в одній і тій же HTML-формі. Так що, можливо, найважче завдання для розробників Rails - йти в ногу з усіма цими змінами. (На щастя, з останніми тенденціями і передовою практикою в цій галузі знайомить ряд щотижневих подкастів по Ruby і Ruby On Rails.)

Rails версії 3, наступна капітальна версія Rails, продовжує процес швидкого розвитку інструментарію. Як і раніше, програмна платформа залишається "упертою", вважаючи за краще змінам угоди. Компоненти ядра Rails - маршрути RESTful, відносини, валідації, шаблони і абстракції бази даних - збереглися. Проте, велика частина внутрішніх елементів цих конструкцій були переписані або оптимізовані. Зокрема, багато важливих функцій Rails перестали бути тісно пов'язаними, що дуже нагадує Merb. Наприклад, кошти валідації даних, перш доступні тільки для додатка Rails, стали автономними компонентами і можуть включатися в тканину коду Ruby. Функції контролера, такі як обробка фрагментів і шаблонів, також стали незалежними і можуть вбудовуватися в будь-яку бібліотеку.

У цій статті ми розглянемо Rails 3 і його численні зміни та доповнення і створимо з нуля новий додаток Rails 3. Станом на середину лютого 2010 року Rails 3 знаходиться на стадії попередньої бета-версії, і основна команда збирає виправлення, коментарі та документацію для підготовки офіційного випуску до початку літа. Проте, поточного втілення Rails 3 досить для створення додатків і ознайомлення з безліччю нових можливостей.

Зміни, великі і дрібні

Число змін в Rails 3 занадто велике, щоб розповісти тут про всі. Повний список разом з додатковим матеріалом наведено в Інформації про випуск Rails 3 (див. Посилання в розділі ресурси ). Тут же розглядаються лише деякі зміни, найбільш важливі для розробників.

  • Одна команда керує всім. Rails 3 відмовляється від включення сімейства сценаріїв (script / server, script / generate і rest) в кожен додаток і пропонує натомість єдину команду з влучною назвою rails. Наприклад, там, де раніше потрібно було вводити ./script/console, тепер досить вставити rails console. Крім того, команда rails, як і раніше, породжує нові додатки. Її функція залежить від того, чи виконується вона в існуючому додатку Rails.
  • Рішення проблеми залежності не будуть задоволені. Узгодження і дозвіл залежностей між джемами - серйозна проблема. Версії джему можуть варіюватися від однієї системи до іншої, як і набір доступних джемів. При такому розмаїтті широке розгортання або поширення Rails-додатків може виявитися скрутним. У Rails 3 з'явилася спеціальна утиліта Bundler для управління залежностями (що робить непотрібним config.gem). Залежно декларуються в каталозі з іменем Gemfile в корені додатки. Bundler завантажує і зберігає всі зазначені джеми. Можна навіть "упакувати" джеми в власний додаток, щоб обійтися без завантаження з зовнішніх сховищ.
  • Запити без запитів. Rails завжди ефективно використовував предметно-орієнтовані мови (DSL) - взяти хоча б has_one або validates_numericality_of - за одним важливим винятком: запитів до бази даних. Звичайно, динамічні функції пошуку Rails полегшують завдання, але код, що кишить хеш-опціями, часто рясніє елементами: conditions,: order і: limit і операторами find_by_sql. Rails 3 містить реляционную алгебру, спеціальний DSL для вираження запитів. У число його елементів входять project (для вибору стовпців), where (для запису умов), join (для вказівки відносин), take і skip (для завдання меж і зсувів відповідно), group (для агрегування) та інші.
  • Контролери без багаторазово повторюваного коду. Основні дії контролера Rails - new, create, edit, update - як правило, не змінюються, особливо якщо контролер використовується головним чином для операцій CRUD. Насправді часто виявляється досить результату роботи генератора контролера, ./script/generate controller, без додаткових змін. З огляду на це подібність, в Rails 3 для ще більшого спрощення коду доданий Responder. Наприклад, для виконання дії create достатньо лише кількох рядків коду: class PostsController respond_to: html,: xml def create @post = Post.create (params [: post]) respond_with (@post) end end

    У цьому фрагменті respond_with (@post) вказує на show, щоб відображати новий запис, якщо @post успішно збережений, або на new, якщо об'єкт, наприклад, не пройшов валідацію.

Знову ж таки, це всього лише невелика вибірка. Приклади цих та інших нових функцій наведені в наступному розділі, де ми побудуємо додаток Rails 3 з нуля.

Перше додаток Rails 3

Для запуску Rails 3 система повинна мати Ruby версії 1.8.7, Ruby версії 1.9.2 або більш пізню версію мови програмування з бібліотеки і інтерпретатором. Корисно також встановити версію програмного забезпечення управління Git, так як Rails 3 і багато інших серйозні проекти Rails управляються в Git. Система повинна містити також механізм бази даних, такий як SQLite (версія 3), MySQL або PostgreSQL. Web-сервер для розробки додатків Rails не потрібно, але, як правило, входить до складу експлуатованої системи.

Для створення програми Rails 3 потрібно джем попереднього випуску Rails 3 і все його залежності. Тепер можна встановити необхідні компоненти за допомогою всього декількох команд (див. лістинг 1 ). (Перш ніж продовжити, зверніться до документації Rails 3, так як деталі можуть змінюватися від випуску до випуску.)

Лістинг 1. Джем попереднього випуску Rails 3 і його залежності

$ Gem install rails3b Через помилку rubygems, щоб версія 0.9 працювала, потрібно видалити всі попередні версії Bundler Successfully installed mime-types-1.16 Successfully installed mail-2.1.2 Successfully installed text-hyphen-1.0.0 Successfully installed text-format- 1.0.0 Successfully installed memcache-client-1.7.8 Successfully installed rack-1.1.0 Successfully installed rack-mount-0.4.7 Successfully installed abstract-1.0.0 Successfully installed erubis-2.6.5 Successfully installed i18n-0.3.3 Successfully installed tzinfo-0.3.16 Successfully installed bundler-0.9.5 Successfully installed thor-0.13.1 Successfully installed rails3b-3.0.1 14 gems installed $ gem install arel --pre Successfully installed activesupport-3.0.0.beta Successfully installed arel- 0.2.pre 2 gems installed $ gem install rails --pre Successfully installed activemodel-3.0.0.beta Successfully installed actionpack-3.0.0.beta Successfully installed activerecord -3.0.0.beta Successfully installed activeresource-3.0.0.beta Successfully installed actionmailer-3.0.0.beta Successfully installed railties-3.0.0.beta Successfully installed rails-3.0.0.beta 7 gems installed

На наступному кроці створюється додаток - невеликий вики, наведений в лістингу 2 . Ця програма для створення заміток і управління ними. Кожна замітка має назву і містить певний текст, а для створення нової замітки досить вставити посилання на неї в тіло існуючої сторінки. Посилання може бути будь-яким словом в "горбатому" регістрі, таким як TheSolarSystem або TheOscars.

Примітка. Вихідний код програми вики міститься в таблиці завантаження в кінці статті.

Лістинг 2. Rails-додаток вікі

$ Rails wiki

Виконавши команду ls -lR, яка буде показувати вміст додатка, ви побачите кілька нових файлів:

  • Gemfile - це згадуваний вище джем декларації. Цей файл повинен містити як мінімум два рядки: один вказує, що це джем вихідного коду Rails 3 Beta, а інша приєднує сам джем Rails 3 Beta. Можливо, знадобиться третій рядок (як мінімум) для підключення до бази даних:
    source 'http://gemcutter.org' gem "rails", "3.0.0.beta" gem "sqlite3-ruby",: require => "sqlite3"
  • Файл config / application.rb містить багато опцій, які раніше перебували в файлі config / environment.rb. Останній зберігся, але в значній мірі застарів. Одним важливим доповненням в файлі config / application.rb став блок generators block:
    config.generators do | g | g.orm: active_record g.template_engine: erb g.test_framework: test_unit,: fixture => true end

    Для нашого застосування Rails 3 є вибір з кількох сумісних об'єктно-реляційних відображень (ORM), механізмів шаблонів і середовищ випробувань. Блок генераторів містить настройки для додатків і викликає потрібні генератори для моделей, уявлень і т.п.

  • Джем db / seeds.rb не є новинкою Rails 3, але варто згадки, так як він доданий порівняно недавно (в Rails версії 2.3.4). Якщо додаток для коректної роботи вимагає введення вихідних даних, таких як ім'я користувача з правами адміністратора, розцінки або статичні сторінки, створюйте ці дані в db / seeds.rb і запустіть задачу rake db: seed. До файлу seed не існувало ніяких угод по ініціалізації, і багато розробників поміщали код в міграції, стираючи відмінності між створенням бази даних і її заповненням.
  • Файл config.ru, який знаходиться в корені кожного додатка Rails 3, це так званий файл rackup, або файл конфігурації Rack-додатки. Rails 3 - це Rack-додаток і сумісний з будь-яким Web-сервером, який також підтримує Rack. У загальному випадку в config.ru втручатися не потрібно, поки немає необхідності додати інші Rack-компоненти.

Є ще кілька нових файлів; більшість з них, однак, повинні здатися вам знайомими по Rails версії 2.3. Файл config / routes.rb служить тієї ж мети, що і раніше, хоча і в дуже спрощеною і наближеною до Ruby формі. Нижче ми наведемо приклад.

Після створення програми та редагування Gemfile для вказівки потрібних залежностей наступним кроком має бути збір джемів для додатка. Це завдання вирішує нова утиліта bundle (див. лістинг 3 ).

Лістинг 3. Збір необхідних джемів

$ Bundle installFetching source index from http://gemcutter.org Resolving dependencies Installing abstract (1.0.0) from system gems Installing actionmailer (3.0.0.beta) from system gems Installing actionpack (3.0.0.beta) from system gems Installing activemodel (3.0.0.beta) from system gems Installing activerecord (3.0.0.beta) from system gems Installing activeresource (3.0.0.beta) from system gems Installing activesupport (3.0.0.beta) from system gems Installing arel ( 0.2.1) from rubygems repository at http://gemcutter.org Installing builder (2.1.2) from system gems Installing bundler (0.9.7) from rubygems repository at http://gemcutter.org Installing erubis (2.6.5) from system gems Installing i18n (0.3.3) from system gems Installing mail (2.1.2) from system gems Installing memcache-client (1.7.8) from system gems Installing mime-types (1.16) from system gems Installing rack (1.1. 0) from system gems Installing rack-mount (0.4.7) from system gems Installing rack-test (0.5.3) from system gems Installing rails (3.0.0.beta) from system gems Installing railties (3.0.0.beta) from system gems Installing rake (0.8.7) from system gems Installing sqlite3-ruby (1.2.5) from rubygems repository at http: //gemcutter.org with native extensions Installing text-format (1.0.0) from system gems Installing text-hyphen (1.0.0) from system gems Installing thor (0.13.3) from rubygems repository at http://gemcutter.org Installing tzinfo (0.3.16) from system gems Your bundle is complete!

Утиліта bundle, скорочення від Bundler, завантажує і встановлює все джеми, зазначені в Gemfile, і все, що необхідно для цих джемів (див. лістинг 4 ). Утиліта bundle дозволяє також скопіювати всі ці залежності в додаток, що робить код самодостатнім. Зокрема, якщо запустити bundle pack, Bundler скопіює корпус джемів в vendor / cache.

Лістинг 4. Запуск утиліти bundle

$ Bundle pack Copying .gem files into vendor / cache * bundler-0.9.7.gem * thor-0.13.3.gem * abstract-1.0.0.gem * mime-types-1.16.gem * text-hyphen-1.0. 0.gem * rack-mount-0.4.7.gem * rake-0.8.7.gem * text-format-1.0.0.gem * tzinfo-0.3.16.gem * rack-test-0.5.3.gem * builder-2.1.2.gem * erubis-2.6.5.gem * memcache-client-1.7.8.gem * rack-1.1.0.gem * sqlite3-ruby-1.2.5.gem * i18n-0.3.3. gem * activesupport-3.0.0.beta.gem * arel-0.2.1.gem * mail-2.1.2.gem * activemodel-3.0.0.beta.gem * activerecord-3.0.0.beta.gem * actionpack- 3.0.0.beta.gem * railties-3.0.0.beta.gem * actionmailer-3.0.0.beta.gem * activeresource-3.0.0.beta.gem * rails-3.0.0.beta.gem $ ls vendor / cache abstract-1.0.0.gem memcache-client-1.7.8.gem actionmailer-3.0.0.beta.gem mime-types-1.16.gem actionpack-3.0.0.beta.gem rack-1.1.0.gem activemodel-3.0.0.beta.gem rack-mount-0.4.7.gem activerecord-3.0.0.beta.gem rack-test-0.5.3.gem activeresource-3.0.0.beta.gem rails-3.0.0 .beta.gem activesupport-3.0.0.beta.gem railties-3.0.0.beta.g em arel-0.2.1.gem rake-0.8.7.gem builder-2.1.2.gem sqlite3-ruby-1.2.5.gem bundler-0.9.7.gem text-format-1.0.0.gem erubis-2.6 .5.gem text-hyphen-1.0.0.gem i18n-0.3.3.gem thor-0.13.3.gem mail-2.1.2.gem tzinfo-0.3.16.gem

Vendor / cache можна вважати власним сховищем джемів додатки. Базу коду можна перемістити в будь-яке місце, і програмне забезпечення джемів і потрібні версії збережуться - ніякого віддаленого сховища не потрібно. Наприклад, якщо після bundle pack запустити bundle install, джеми будуть встановлені в систему зі сховища додатка (див. лістинг 5 ).

Лістинг 5. Установка джемів

Fetching source index from http://gemcutter.org Resolving dependencies Installing abstract (1.0.0) from .gem files at / Users / strike / projects / rails3 / wiki / vendor / cache Installing actionmailer (3.0.0.beta) from. gem files at / Users / strike / projects / rails3 / wiki / vendor / cache Installing actionpack (3.0.0.beta) from .gem files at / Users / strike / projects / rails3 / wiki / vendor / cache ... Installing thor (0.13.3) from .gem files at / Users / strike / projects / rails3 / wiki / vendor / cache Installing tzinfo (0.3.16) from .gem files at / Users / strike / projects / rails3 / wiki / vendor / cache Your bundle is complete!

створення вікі

Щоб створити додаток, сгенерируем скафолд сторінки, створимо базу даних, завантажимо в неї першу сторінку і задамо необхідні маршрути (див. лістинг 6 ). Для простоти запис сторінки вікі обмежується декількома полями: заголовок, складаючи (скорочений заголовок), тіло і мітки часу, які відзначають, коли сторінка була створена і коли вона востаннє змінювалася. Title і slug - це строкові поля; prose - текстове поле, а часові - це поля дати і часу. (Звичайно, для реального вікі знадобляться додаткові поля, такі, як ім'я автора останньої замітки і попередні версії сторінки. Для стислості, в цьому прикладі відсутні також користувачі і сеанси, форматування і будь-яка аутентифікація і авторизація.) Вихідну модель, набір уявлень і контролер можна створити за допомогою команди rails generate scaffold.

Лістинг 6. Повний код вікі-додатки

$ Rails generate scaffold page title: string slug: string body: text --timestamps invoke active_record create db / migrate / 20100221115613_create_pages.rb create app / models / page.rb invoke test_unit create test / unit / page_test.rb create test / fixtures / pages.yml route resources: pages invoke scaffold_controller create app / controllers / pages_controller.rb invoke erb create app / views / pages create app / views / pages / index.html.erb create app / views / pages / edit.html.erb create app / views / pages / show.html.erb create app / views / pages / new.html.erb create app / views / pages / _form.html.erb create app / views / layouts / pages.html.erb invoke test_unit create test / functional / pages_controller_test.rb invoke helper create app / helpers / pages_helper.rb invoke test_unit create test / unit / helpers / pages_helper_test.rb invoke stylesheets create public / stylesheets / scaffold.css

Якщо вам цікаво, що трапилося з ./script/generate, нагадаємо, що тепер це частина всемогутньою команди rails.

Виконаємо rake db: create db: migrate, щоб створити базу даних:

$ Rake db: create db: migrate == CreatePages: migrating ===================================== =============== - create_table (: pages) -> 0.0010s == CreatePages: migrated (0.0011s) =============== ============================

Тепер вікі існує, але він порожній. Додамо початкову сторінку в якості якоря для всіх інших. Відредагуємо файл db / seeds.rb і напишемо код створення нової сторінки, як показано в лістингу 7 .

Лістинг 7. Початкова сторінка вікі

Page.create (: title => 'The Marx Brothers Wiki',: slug => 'Home',: body => 'An encyclopedic guide to the Marx Brothers.')

Виконаємо rake db: seed, щоб виконати код. Сторінку можна побачити за допомогою rails console, як показано в лістингу 8 .

Лістинг 8. Перевірка початкової сторінки

$ Rake db: seed (in / Users / strike / projects / rails3 / wiki) $ rails console Loading development environment (Rails 3.0.0.beta) irb (main): 001: 0> Page.all => [# <Page id: 1, title: "The Marx Brothers Wiki", slug: "Home", body: "An encyclopedic guide to the Marx Brothers.", created_at: "2010-02-21 12:24:43", updated_at: " 2010-02-21 12:24:43 ">]

Перш ніж перейти до коду, задамо маршрути. Потрібні два маршрути: маршрут за замовчуванням для пошуку домашньої сторінки і ще один маршрут для пошуку сторінки по її складаючи. В лістингу 9 наведено остаточний файл config / routes.rb.

Лістинг 9. config / routes.rb (остаточний)

Wiki :: Application.routes.draw do | map | resources: pages root: to => "pages # show" end

У рядку 2 рядок rails generate scaffold page з лістингу 6 автоматично створила маршрут RESTful. Цей маршрут потрібно додати в рядок 3 вручну. Синтаксис для вказівки "кореня" маршруту сайту за замовчуванням - новинка Rails 3. Рядок 3 говорить: "Показати маршрут '/' на метод 'show' контролера сторінок". Код методу show знаходить головну сторінку в базі даних і відображає її.

Після додавання нового кореневого маршруту видаляємо файл public / index.html, щоб виключити конфлікти:

$ Rm public / index.html

Тепер зверніть увагу на контролер сторінки. Код контролера в Rails 3 може бути вельми лаконічним. В лістингу 10 показана вихідна реалізація контролера з єдиним методом show.

Лістинг 10. Контролер Rails 3

class PagesController <ApplicationController respond_to: html def show @page = Page.where (: slug => (params [: id] || 'Home')) .first respond_with (@page) end end

Як бачите, весь повторюється текст, характерний для контролерів Rails 2, відсутня. У respond_to перераховані формати, які підтримує контролер; в даному випадку він реагує тільки на запити HTML. respond_with - це скорочене позначення логіки, яка вирішує, як повинен працювати контролер.

Синтаксис запиту також істотно змінився. Пошук служить прикладом реляційної алгебри Rails 3. Ви можете запитати, навіщо потрібен суфікс first. Справа в тому, що where і інші операнди, які висловлюють запит, насправді не призводять до виконання запиту. Замість цього, запит очікує, поки дані дійсно будуть потрібні. Це відкладена завантаження, затримка запиту до останнього. Суфікс first викликає фактичний запит з бази даних.

Якщо тепер запустити додаток, ви повинні побачити щось подібне малюнку 1 .

Малюнок 1. Вікі-додаток на Rails 3
За останні два роки середовище розробки додатків Ruby On Rails придбала безліч прихильників в сфері постачальників послуг хостингу і інтернет-послуг, вражаючий набір інструментів розробки, а також широкий спектр додаткових бібліотек - які на сленгу Ruby називаються джемами і плагінами, - розширюють можливості програмного забезпечення

Тепер додамо до контролера додатковий код. В лістингу 11 наведено повний код контролера.

Лістинг 11. Контролер Rails 3 цілком

class PagesController <ApplicationController respond_to: html before_filter: get_page,: except => [: create] def create respond_with (@page = Page.create (params [: page])) end def edit end def index render: action =>: show end def show @page || = Page.new (: slug => params [: id]) if @ page.new_record? render: action =>: new else respond_with (@page) end end def update @ page.update_attributes (params [: page]) respond_with (@page) end private def get_page @page = Page.where (: slug => (params [: id] || 'Home')) .first || Page.where (: id => params [: id]) .first end end

У контролері метод index просто відображає дію show без ідентифікатора сторінки, відображаючи, таким чином, головну сторінку. show відображає сторінку з урахуванням ідентифікатора або складаючи (пошук для всіх дій зосереджений в get_page, що ще більше скорочує обсяг коду); якщо сторінка не існує, до редагування готується нова сторінка.

Модель Page лише підтверджує присутність всіх полів:

class Page> ActiveRecord :: Base validates_presence_of: body,: slug,: title end

Робота з перекладу посилань в горбатому регістрі в посилання на інші сторінки відбувається в поданні для моделі Page. Всю важку роботу виконує допоміжна функція в app / helpers / pages_helper.rb, зберігаючи уявлення мінімальним (див. Listing 12 ).

Лістинг 12. Допоміжна функція перекладу посилань

module PagesHelper def wikify (page) return '' if page.body.blank? page.body.gsub (/ ^ ([AZ] [[: alnum:]] * ([AZ] [[: alnum:]] *) +) /) do | match | link_to ($ 1,: action =>: show,: id => $ 1) end end end

Виходить своєрідне уявлення, наведене в лістінгу 13 .

Лістинг 13. Типове уявлення

<P> <b> Title: </ b> <% = @ page.title%> </ p> <p> <b> Body: </ b> <% = raw wikify (@page)%> </ p> <% = link_to 'Edit', edit_page_path (@page)%> | <% = Link_to 'Back', pages_path%>

Оператор raw - новинка Rails 3. На відміну від попередніх версій Rails, за замовчуванням всі рядки видаються безпечними, позбавленими HTML. Якщо потрібно видати рядок з HTML, слід використовувати raw.

переведення стрілок

Крім показаних тут удосконалень і зручностей, Rails 3 пропонує кращу продуктивність, ніж його попередники, особливо при рендеринге фрагментів. Можна також створити свої власні класи валідатора і використовувати більш раціональні стандартні перевірки. Наприклад, наступна перевірка, написана Джеремі Маканоллі, колись вимагала чотирьох окремих рядків коду.

validates: login,: presence => true,: length => {: minimum => 4},: uniqueness => true,: format => {: with => / [A-Za-z0-9] + /}

Rails Guides, офіційні підручники з Rails, вже відредаговані відповідно до версії Rails 3. Детальну інструкцію і дотепні рішення можна знайти також в блогах Джеремі Маканоллі, Ієгуди Кац, Грегга Поллака і інших активістів спільноти (див. ресурси ). Ряд популярних книг теж редагується відповідно до новим випуском, в тому числі містить плідні ідеї книга- "взрихлітель" Швидка Web-розробка за допомогою Rails (див. ресурси ).

Ресурси для скачування

Схожі тими

  • оригінал статті (EN).
  • Інформація про випуск Rails 3 : Всеосяжний і актуальний перелік доповнень, удосконалень і змін в коді.
  • Merb : Rails 3 увібрав в себе багато особливостей середовища Merb. Зустрітися з історією та можливостями Merb.
  • Блог Джеремі Маканоллі : Рекомендації і думку експерта.
  • Блог Ієгуди Каца : Кац - один із співавторів ядра Rails і головний архітектор інтеграції Merb і Rails.
  • Блог Грегга Поллака : Поллак веде щотижневий подкаст і періодично випускає відеоролики, присвячені Rails.
  • Швидка Web-розробка за допомогою Rails (Sam Ruby, Dave Thomas, David Heinemeier Hansson, et al., The Pragmatic Bookshelf, 2009): ця книга - безцінне джерело знань про Rails.
  • Ruby on Rails : Місце, де можна більше дізнатися про Rails і завантажити програмне забезпечення.
  • Sunspot : Завантажте копію плагіна текстового пошуку Sunspot для Rails з Github.
  • Clearance : Це готове рішення Rails допомагає при аутентифікації користувачів.
  • Bullet : Включіть в свій додаток Bullet, щоб шукати запити, які занадто ліниві або занадто енергійні.
  • Oink : Спробуйте плагін з влучною назвою Oink, щоб зменшити кількість пам'яті, що використовується вашим Rails-додатком.

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

New_record?
Blank?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: