Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...
| Облако тегов с помощью Ruby on Rails |
|
|
|
| 02.06.2011 17:38 |
|
Облако тегов - это технология, которая позволяет представить набор данных в визуальном виде на веб странице .Естественно, что данные принадлежат текущему сайту или приложению. В Ruby on Rails существует gem Acts As Taggable On. Пользоваться им очень просто и удобно. Рассмотрим такой пример использования данного gema. Предположим, у нас есть Ruby on Rails приложение, которое отображает каталог магазинов. То бишь, данные представлены в виде 2 таблиц, одна из которых отображает список магазинов ,а другая – товары, которые имеются в этих магазинах. Связаны таблицы по внешнему ключу “shop_id” в таблице “products”. Модели и контроллеры уже существуют.
CREATE TABLE `shops` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `shortdesc` varchar(255) DEFAULT NULL, `longdesc` text, `status` enum('active inactive') DEFAULT NULL, `parentid` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `products` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `shortdesc` varchar(255) DEFAULT NULL, `longdesc` text, `thumbnail` varchar(255) DEFAULT NULL, `image` varchar(255) DEFAULT NULL, `sizes` enum('s','m','''l'', ''x') DEFAULT NULL, `colors` enum('red','blue','green','brown','''white'''',‘black"') DEFAULT NULL, `grouping` varchar(16) DEFAULT NULL, `status` enum('active','inactive') DEFAULT NULL, `shop_id` int(11) DEFAULT NULL, `featured` enum('true','false') DEFAULT NULL, `price` float(4,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Теперь нужно установить сам Acts As Taggable On.Для этого в командной строке нашего приложения вводим:
C:\catalog>gem install mbleigh-acts-as-taggable-on --source http://gems.github.c om Successfully installed mbleigh-acts-as-taggable-on-1.0.5 1 gem installed Installing ri documentation for mbleigh-acts-as-taggable-on-1.0.5... Installing RDoc documentation for mbleigh-acts-as-taggable-on-1.0.5...
Установка gema завершена. Теперь запустить скрипт миграции для создание таблиц базы данных gema: C:\catalog>ruby script/generate acts_as_taggable_on_migration create db/migrate create db/migrate/20110602140242_acts_as_taggable_on_migration.rb
C:\catalog>rake db:migrate (in C:/catalog) == ActsAsTaggableOnMigration: migrating ====================================== -- create_table(:tags) -> 0.0940s -- create_table(:taggings) -> 0.1090s -- add_index(:taggings, :tag_id) -> 0.3130s -- add_index(:taggings, [:taggable_id, :taggable_type, :context]) -> 0.1720s == ActsAsTaggableOnMigration: migrated (0.6880s) ============================= Получаем 2 таблицы базы данных такого вида:
CREATE TABLE `taggings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tag_id` int(11) DEFAULT NULL, `taggable_id` int(11) DEFAULT NULL, `tagger_id` int(11) DEFAULT NULL, `tagger_type` varchar(255) DEFAULT NULL, `taggable_type` varchar(255) DEFAULT NULL, `context` varchar(255) DEFAULT NULL, `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `index_taggings_on_tag_id` (`tag_id`), KEY `index_taggings_on_taggable_id_and_taggable_type_and_context` (`taggable_id`,`taggable_type`,`context`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `tags` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Далее нам нужно обязательно добавить в файл модели каталога такую строчку:
Она инициализирует gem и позволяет использовать его в работе класса модели и связывает с существующим таблицами приложения. Теперь в классе котроллера методе “create” нам нужно ввести такой код: def create @catalog = Catalog.new(params[:catalog]) @catalog.tag_with(params[:tag_list]) Эта строка будет заполнять данные для вновь созданного облака тегов, то есть заполнять необходимые поля в таблицах базы данных.Кроме того, в форме “/app/views/catalog/new”, которая отправляет эти данные надо создать поле для ввода тегов: <label for="tags_list">Tags:</label> <%= text_field_tag 'tag_list', @catalog.tags.collect{|t| ➥ t.name}.join(" ") %>
И на конец, редактируем форму, которая отображает данные по выбранному пользователем магазину, файл “/app/views/catalog/show” <% unless @catalog.tags.blank? %> <p><strong>Tags:</strong> <%= @catalog.tags.collect{|tag| link_to tag.name, :action => 'tag', :id => tag}.join(", ") %></p> <% end %> Это все, облако тегов доступно в нашем приложении.
|
| Обновлено 12.07.2011 00:01 |