На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > [ruby] def find, HELP:)
      Такая пробелема.. Есть база, в ней записи (блог), много записей, скажем 50, я хочу получить только к примеру запись с ID 5, или к примеру хчоу получить 10 записей (это будет SQL запрос). так вот, где мне его написать и как?
      там вроде в модели надо написать,..

      def find
      и тут писать sql запрос?
      end

      Так? Ну а дальше как, его вывести?
        Может, это все-таки не чистый руби, а Rails ?

        Тогда Post.find(5) или Post.all(:limit => 10)
          Хочу уточнить, что каркас Rails обладает функциональностью, избавляющей от необходимости составлять SQL-запросы. Запросы пишутся через специальный API. Почитай руководство на RailsGuides: Retrieving Objects from the Database и вопросы отпадут.

          ExpandedWrap disabled
            @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).
          ExpandedWrap disabled
            Name: <%= @object.name %>
            Спасибо.

            И еще вопрос, дурацкий..., это все же в контроллере писать?
            а тогда получается модель будет пустая, да?
              да, модель пустая будет
              почитай книги, это самые азы, посмотри ролик по созданию блога за 10 минут - тебе хватит, чтобы понять что к чему
                В методах контроллера соответствущих действий производятся действия с записями (извлекаются из БД, обновляются, удаляются). Так называемые переменные экземпляра (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-клиенту.
                Сообщение отредактировано: Romtek -
                  <оффтоп>как же режет слух слово "рубине"...брр=) на "руби" и не более</оффтоп>
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0.0556 ]   [ 15 queries used ]   [ Generated: 31.05.26, 14:20 GMT ]