Нужен совет по поводу вещей, которые делают Rails - PullRequest
4 голосов
/ 04 августа 2011

Я создал приложение Rails, которое довольно просто ... вы отправляете запрос на определенную веб-страницу, он автоматически генерирует отчет и сохраняет его в файл локально на сервере.Генерируемый отчет по умолчанию создается за текущий день.То, что я хотел бы сделать, - это разрешить пользователям вводить в URL-адрес дату, которую они хотели бы, чтобы генерировался отчет, чтобы превратить мой маленький пони в один трюк во что-то более полезное.

В нынешнем виде я встроил весь полезный код генерации отчетов в действие index домашнего контроллера, но не могу не чувствовать, что он действительно принадлежит модели, а не контроллеру,но я не совсем уверен, как сделать этот переход.

Буду очень признателен за любые советы от вас, опытных ветеринаров.

Спасибо.

Код моего индексаaction .... По существу, вызывается действие index get, и моя программа выясняет, какой сегодня день, а затем использует дату для отправки запроса другому API, который затем возвращает необходимую информацию в виде объекта.Затем я просто прохожу объект, собираю необходимую информацию и создаю текстовый файл с этой информацией.Представление для контроллера дома просто печатает сообщение о том, что отчет был сгенерирован, и указывает путь к нему.

Я хотел бы подчеркнуть, что я хотел бы использовать URL-адрес, например mysite.com/report/20110803чтобы предоставить моему контроллеру информацию о дате, за которую должен выполняться отчет.

1 Ответ

2 голосов
/ 04 августа 2011

Вы правильно думаете, что этот код принадлежит модели. В идеале модель отчета. Контроллер должен, как правило, просто передавать представление переменными экземпляра, обрабатывать флэш-сообщения и так далее. Логика должна быть в модели.

Тем не менее, я бы сделал это так: Создайте метод модели, который генерирует нужный вам отчет. Затем выполните этот метод в контроллере и получите нужный отчет на основе метки времени, которая передается в метод модели.

Тогда бы это было в контроллере:

redirect_to new_report_url, :stamp => the_stamp_value

Я думаю, вы поняли идею. Вам просто нужно иметь простой маршрут, который ожидает значение штампа, и вы готовы идти:)

...