Controller Modules Messed Me Up


#1

Modules are exactly what I needed to figure out, but once I started my
app over again putting my controller under a module folder, I can’t get
my basic app going.

Basically I have a News app, where we will post PR and other articles of
interest. It was working fine with a model/controller combo of
news/index for the public and news/admin for the administrators. Keep
in mind this was the very early stages of development.

So I knew I wanted more components in the admin area, so I finally found
modules and went back to do it all again with news/index for the public
and admin/news/index for the administrators. Everything set up fine
with the generator and scaffold for adding news in the admin area.
However now I can’t get the public area to show the list of news. Here
is what I did:

/app/controllers/news_controller.rb

class NewsController < ApplicationController

def Index
@news = News.news_items
end
end

/app/models/news.rb

class News < ActiveRecord::Base

validates_presence_of :date_added, :date_live, :news_date, :added_by,
:headline, :summary, :article

def self.news_items
find( :all,
:conditions => “news_date <= now()”,
:order => “news_date desc”)
end

end

/app/views/news/index.rhtml

Recent News

<% for news in @news %>

<%= news.headline %>

<% end %>

Here is the output of http://localhost:3000/news

NoMethodError in News#index

Showing app/views/news/index.rhtml where line #3 raised:

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.each
Extracted source (around line #3):

1:

Recent News


2:
3: <% for news in @news %>
4:
5:

<%= news.headline %>


6:
RAILS_ROOT: /Users/Chad/Sites/xxx/public/…/config/…

Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/views/news/index.rhtml:3:in `_run_rhtml_news_index’
Request

Parameters: None

Show session dump

Response

Headers: {“cookie”=>[], “Cache-Control”=>“no-cache”}

It appears to me that @news doesn’t contain anything according to the
error. Where is my problem in the code? This worked fine when the
admin section was news/admin, so is there something different that must
be done when it is in the module /admin/news/admin?