Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create a controller and action without a model?

I have several models:

  • Email
  • Letter
  • Call

All three belong to a model Campaign. And a Campaign has_many Contacts

I envision being able to see a schedule for Today by going to domain/schedule/today

What I'd like it to do would be to show all the Events (Email, Letter, Call) that have to happen today for each campaign.

I tried the following, but have some challenges in putting it into a controller versus into a View. There are many emails in campaign.

Email.days is the number of days from the contact.start_date that an email should be sent to the Contact.

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
like image 212
Satchel Avatar asked May 24 '26 05:05

Satchel


1 Answers

You're actually asking the wrong question.. Controllers aren't linked to any model fundamentally, they really display whatever you want. You can have a FooController that displays all the Bars and a DogController that gives info about cats..

To solve your problem:

  1. You're not 'sharing' anything with your view for it to display.
  2. You're also putting the logic in the wrong place, and you're not actually fetching the campaigns from the database..

In your controller you need to fetch the data from the DB:

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

In your view you display the campaign info..

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

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

  <% end %>
<% end %>

There's much more to it, but hopefully this gets you pointed in the right direction.

like image 200
radixhound Avatar answered May 26 '26 18:05

radixhound



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!