RoR - разработка

Ruby On Rails

  • Архитектура приложений Rails
  • Установка Rails
  • Немедленное использование
  • Интернет-магазин
    • Задача 3: тестирование
    • Задача А: ведение учета товаров
    • Задача Б: отображение каталога товаров
    • Задача В: создание корзины
    • Задача Г: усиливаем приложение за счет использования AJAX
    • Задача Д: оформление покупки
    • Задача Е: администрирование
    • Задача Ж: окончательная доработка
  • Углубленное изучение Rails
  • Active Support
  • Миграции
  • Active Record
    • Основы
    • Связи между таблицами
    • Жизненный цикл объекта
  • Action Controller: маршрутизация и URL
  • Action Controller и Rails
  • Action View
  • Веб 2.0
  • Action Mailer
  • Веб-службы Rails
  • Безопасность и развертывание приложения
    • Организация защиты Rails-приложения
    • Развертывание и эксплуатация
  • Справка по Ruby
Главная

Соединение страниц

Веб-приложение крайне редко состоит из одной страницы. Посмотрим, как можно
добавить к нашему простейшему приложению еще один впечатляющий пример
веб-дизайна.
Обычно разнородные страницы приложения соответствуют различным представлениям.
В данном случае для работы со страницей мы будем также использовать
и новый метод действия (и это, как мы увидим далее в книге, делается вовсе
не случайно). Для обоих действий мы используем один и тот же контроллер. Вообще-
то так не делается, но в данном случае использовать новый контроллер нам
просто ни к чему.
Вы уже знаете, как можно добавить новые представление и действие к Rails-
приложению. Чтобы добавить действие, мы определяем в контроллере новый метод.
Назовем это действие goodbye. Теперь наш контроллер приобретет следующий
вид:
Листинг файла app/controllers/say_controller.rb
class SayController < AppticationController
def hello
@>time = Time, now
end
def goodbye
end
end
Затем нам надо создать новый шаблон в каталоге app/views/say. На сей раз он
будет называться goodbye.rhtml, поскольку по умолчанию шаблоны называются
по имени соответствующего действия.
Листинг файла app/views/say/goodbye.rhtml

Увидимся!

<|11>до свидания!

Очень приятно, что Вы нас навестили.

Опять обратимся к нашему, уже испытанному браузеру, но на этот раз укажем
на наше новое действие, воспользовавшись URL http://localhost:3000/say/goodbye.
Мы должны увидеть следующую картину.
Теперь нам нужно связать два экрана воедино. Мы поместим на страницу hello
ссылку, которая приведет нас на страницу goodbye, и наоборот. В серьезном приложении
нам, скорее всего, захочется создать соответствующие кнопки, но здесь
мы воспользуемся простыми гиперссылками.
Мы уже знаем, что в Rails используется соглашение, согласно которому из
URL извлекаются имя требуемого контроллера и имя действия, определенного
в этом контроллере. Поэтому в наших ссылках проще всего воспользоваться этим
URL-соглашением. Тогда в файле hello.rhtml появится следующий фрагмент:

Скажите <а href="/say/goodbye" >До свидания!
А в файле goodbye.rhtml появится указание другого пути:

'. На сей раз он
яы называются
гтот раз укажем
ЭОО/say/goodbye.
<р>

Скажите <а href="/say/hello" >Привет!
Этот подход вполне работоспособен, но имеет свои слабые места. Если нам понадобится
переместить приложение на веб-сервере в другое место, URL может
устареть. К тому же мы закладываем в наш код предположения относительно
URL-формата, используемого Rails, который в будущих версиях может претерпеть
изменения.
К счастью, мы можем обойтись без всякого риска. Rails поставляется с массой
вспомогательных методов, которые можно использовать в шаблонах представлений.
В данном случае мы воспользуемся вспомогательным методом l i n k _ t o ,
который создает гиперссылку на действие1. При использовании 1 i nk_to файл
hello.rhtml приобретает следующий вид:
Листинг файла work/demo4/app/views/say/hello.rhtml

<т.тт.1е>Привет, RaiIs!

<п1>Привет от Rails!

Сейчас <%= @time %>.

Настало время
<%= l i n k _ t o "попрощаться!"

Метод link_to вызывается внутри ERb-последовательности <%=. . .%>. В результате
создается ссылка на URL, который вызовет действие goodbye. Первым
параметром в вызове метода link_to является текст, отображаемый в гиперссылке,
а следующий параметр предписывает Rails сгенерировать ссылку на действие
goodbye. Если не указать на другой контроллер, то будет использован текущий.
Давайте ненадолго остановимся и разберемся в том, как создается ссылка. Мы
набрали следующий текст:
link_to "попрощаться!" , raction => "goodbye"
Первым следует вызов метода link_to . (В Rails мы вызываем методы, облегчающие
написание помощников шаблонов.) У тех, кто ранее работал с такими
языками, как Java, нетребовательность Ruby в отношении скобок вокруг параметров
метода может вызвать удивление. Если вам захочется, то вы всегда их сможете
добавить.
Фрагмент : action представляет собой обозначение, свойственное языку Ruby,
Вы можете рассматривать двоеточие, как что-то, что называется..., поэтому
: action означает что-то, названное действием. Фрагмент => "goodbye" связывает
строку попрощаться с именем действия. На самом деле так указываются
ключевые параметры метода. Rails дает возможность более широкого использования
этого средства: если метод воспринимает несколько параметров, часть из которых
являются необязательными, вы можете применить его для обозначения
ключевого параметра.
Ну а теперь вернемся к приложению. Если мы укажем в браузере адрес нашей
страницы под названием hello, то теперь она будет содержать ссылку на страницу
goodbye.
Мы можем внести соответствующие изменения в файл goodbye.rhtml, поместит
в него обратную ссылку на страницу hello.
Листинг файла work/demo4/app/views/say/goodbye.rhtml

Увидимся!

До свидания!

Очень приятно, что Вы нас навестили.

<р>
Пошлите <%= l i n k _ t o "Привет" , :action => "hello" %> еще раз.

Реклама 1

Бензиновый погрузчик. 17ч19бр : 15ч47эм 17б5бк .. рассылки интернет реклама интернет реклама

Реклама 0

. На gara.ru Вы найдете: ипотека ростова, наша специализация ипотека.