Как создать контроллер и действие без модели? - PullRequest
3 голосов
/ 27 апреля 2010

У меня есть несколько моделей:

  • E-mail
  • Письмо
  • Вызов

Все три принадлежат модельной кампании. И Кампания имеет много контактов

Я предполагаю, что смогу увидеть расписание на сегодня, зайдя в домен / расписание / сегодня

Я бы хотел показать все события (электронная почта, письмо, звонок), которые должны произойти сегодня для каждой кампании.

Я попробовал следующее, но у меня возникли некоторые трудности при установке его в контроллер, а не в View. В кампании много писем.

Email.days - это количество дней с даты contact.start_date, на которое электронное письмо должно быть отправлено Контакту.

ScheduleController < 

def index

   campaigns.each do |campaign| #goes through each campaign

      for contacts in campaign.contacts

         Email.find(:all).reject { |email| email.contact.start_date + email.days <= Date.now }


      end
   end

end

1 Ответ

5 голосов
/ 28 апреля 2010

Вы на самом деле задаете не тот вопрос. Контроллеры принципиально не связаны ни с одной моделью, они действительно отображают все, что вы хотите. Вы можете иметь FooController, который отображает все столбцы, и DogController, который дает информацию о кошках ..

Чтобы решить вашу проблему:

  1. Вы не «делитесь» чем-либо с ваш вид для отображения.
  2. Вы также вводите логику в неправильное место, и вы на самом деле не получение кампаний из база ..

В вашем контроллере вам нужно получить данные из БД:

def index
  @campaigns = Campaign.all #share the list of campaigns with the view
end

По вашему мнению, вы отображаете информацию о кампании ..

<% for campaign in @campaigns %>
<!-- display info about the campaign -->

  <% for contacts in campaign.contacts %>
<!-- contact level info and so on.. -->

  <% end %>
<% end %>

Это гораздо больше, но, надеюсь, это поможет вам в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...