[ruby] def find, HELP:)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.139] |
|
|
[ruby] def find, HELP:)
|
Сообщ.
#1
,
|
|
|
|
Такая пробелема.. Есть база, в ней записи (блог), много записей, скажем 50, я хочу получить только к примеру запись с ID 5, или к примеру хчоу получить 10 записей (это будет SQL запрос). так вот, где мне его написать и как?
там вроде в модели надо написать,.. def find и тут писать sql запрос? end Так? Ну а дальше как, его вывести? |
|
Сообщ.
#2
,
|
|
|
|
Может, это все-таки не чистый руби, а Rails ?
Тогда Post.find(5) или Post.all(:limit => 10) |
|
Сообщ.
#3
,
|
|
|
|
Хочу уточнить, что каркас Rails обладает функциональностью, избавляющей от необходимости составлять SQL-запросы. Запросы пишутся через специальный API. Почитай руководство на RailsGuides: Retrieving Objects from the Database и вопросы отпадут.
![]() ![]() @object = Model.find_by_id(id) # будет найдена первая запись с заданным id @objects = Model.all(:limit => count, :offset => from_id) # будут найдены первые count записей, начиная с записи под номером from_id Model - это название модели, из которой нужно извлечь записи. С заглавной буквы. find_by_ ищет первый объект по определённому признаку (attribute). В данном случае, по 'id'. А ещё есть отдельный компонент под названием will_paginate. В его задачу входит постраничное получение записей. Поэкспериментируй сначала в консоли (script/console). Там сразу увидешь результат. А выводить, соответственно, в шаблоне соответствующего действия в заданном контроллере (index.html.erb). ![]() ![]() Name: <%= @object.name %> |
|
Сообщ.
#4
,
|
|
|
|
Спасибо.
И еще вопрос, дурацкий..., это все же в контроллере писать? а тогда получается модель будет пустая, да? |
|
Сообщ.
#5
,
|
|
|
|
да, модель пустая будет
почитай книги, это самые азы, посмотри ролик по созданию блога за 10 минут - тебе хватит, чтобы понять что к чему |
|
Сообщ.
#6
,
|
|
|
|
В методах контроллера соответствущих действий производятся действия с записями (извлекаются из БД, обновляются, удаляются). Так называемые переменные экземпляра (instance variable), такие как @posts, хранят временные данные для отображения их в соответствущем представлении (view) определённого действия. Там, в шаблоне Erb HTML вставки на Рубине позволяют в цикле выводить набор записей, хранящихся в тех @posts.
1. Веб-броузер клиент-машины выполняет запрос GET http://localhost:3000/posts/ 2. Попадаем в метод index контроллера PostsController (в данном случае локального) сервера 3. В методе index выполняются операции извлечения записей из БД, сохраняя результат в @posts 4. В Erb HTML (index.html.erb) вкрапляем код на Рубине, используя @posts. Таким образом, итоговый вариант со подставленными значениями найденных @posts принимают окончательный вариант в виде целевого HTML, который сервер отправляет web-клиенту. |
|
Сообщ.
#7
,
|
|
|
|
<оффтоп>как же режет слух слово "рубине"...брр=) на "руби" и не более</оффтоп>
|