В настоящее время читает и работает над AWDR6 Сэма Руби, Дэвида Брайанта Коупленда и Дэйва Томаса. Я столкнулся с парой проблем и работал над ними. Я не смог найти некоторых решений, поэтому решил создать рабочий журнал здесь для всех, кто может работать над этой книгой.

Программисты-прагматики достаточно замечательны, чтобы разместить эту книгу на Medium. Если вам интересно следовать или практиковаться самостоятельно, перейдите по ссылке.



Задача G: проверить!



Держись тер я штаны. Мы вступаем в страну DSL. Я имею в виду, что рельсы — это мегаконгломерат dsls, который, честно говоря, очень раздражает, и я понимаю, почему folx рады уменьшить его в Rails 7 и выбирают другие фреймворки, использующие один и тот же язык. Мне нравится быть хорошим в том, что я делаю, и нет ничего лучше, чем потеть над проблемой, когда это ошибка синтаксиса в dsl, и, вероятно, dsl, которую вы не будете использовать через месяц и, вероятно, забудете.

Резюме

  • Мы создали форму для сбора сведений о заказе и связали ее с новой моделью заказа.
  • Мы добавили проверку и использовали вспомогательные методы для отображения ошибок пользователю.
  • Мы предоставили ленту, чтобы администратор мог отслеживать входящие заказы.

Время воспроизведения

[✓] — Получить представления в формате HTML — и JSON, работающие для запросов who_bought. Поэкспериментируйте с включением информации о заказе в представление JSON, отобразив @product.to_json(include: :order). Сделайте то же самое для XML, используя ActiveModel::Serializers::Xml.

Проблема. Работая здесь с параметрами рендеринга, я не перешел к RSS-каналам, Atom Feeds, XML или JSON Jbuilder так часто, как обычно с проектом, потому что все они очень нишевые. Я практиковался, изучая то, что мне нужно было знать, чтобы выполнить задание. Что-то, в чем я пытаюсь стать лучше.

Исследование. Здесь мы начинаем работать со всеми вариантами рендеринга, что было весело. Это та же самая информация, но теперь вы можете получить к ней доступ с помощью json, atom и html. Это было веселое упражнение.

Решение. Ниже вы найдете каталог со всеми моими представлениями.



[✓] —Что произойдет, если вы нажмете кнопку «Оформить заказ» на боковой панели, когда экран оформления заказа уже отображается? Можете ли вы найти способ отключить кнопку в этом случае?

Проблема: с этим проблем нет.

Исследование: больше ресурсов о помощниках.



Решение. Я решил использовать метод current_page? помощник для условного рендеринга кнопки оформления заказа.

[✓] — Список возможных типов платежей в настоящее время хранится как константа в классе Order. Можете ли вы переместить этот список в таблицу базы данных? Можете ли вы по-прежнему выполнять проверку поля?

Проблема. Я не знаю, лучший ли это способ.

Исследование: я действительно не знал, что искать для этого, я использовал интуицию и просто играл с этим в консоли, пока это не сработало.

Решение. Я выполнил эту миграцию в базе данных. Это сработало, проверки, которые я изменил вместе с параметрами выбора.

Если у вас есть лучшая идея миграции, дайте мне знать. Это 1:00 мысли так довольно низко. Мне нравится иметь перечисление в модели для хеширования ответа из базы данных. Кажется, что это микро-оптимизация, но это было весело. Кроме того, выбор был одним из источников правды, который мне нравился.

Я полагаю, вы могли бы сделать что-то вроде Order.uniq.pluck(:pay_type), но тогда вам нужно было бы инициализировать базу данных с каждым заказом.

Я состою в книжном клубе Ruby. Если вы заинтересованы в присоединении, напишите мне прямое сообщение, нажмите на меня в Твиттере, свяжитесь со мной!