extending controllers

I'm fairly new to RoR, so apologies in advance if I rape the terminology here...

I am trying to use functionality from one controller in another controller. Here is the first controller:

class PagesController < ApplicationController

   def show        @page = Page.find(params[:id])    end

end

2nd controller

class SiteController < ApplicationController    def some_page       @page = Page.find(:all, :conditions => "name = 'some_page'")    end end

Ultiamtely, I'm trying to access my "Pages" table from a controller other than the Pages controller... not sure if I have to extend the new controller or how the functionality "trickles down" to my new controller?

Any advice is appreciated

You don't need to do anything in particular. The Page model is available in the same way from whatever controller or other model you're using.

Fred

Thanks for the response, that's what I was hoping was the case. One more question:

This code in the "show" Page view works fine

<% for column in Page.content_columns %> <p>   <b><%= column.human_name %>:</b> <%=h @page.send(column.name) %> </p> <% end %>

However if I copy that into the "about" view in the new controller, I get this error:

undefined method `name' for #<Array:0xb799d1f0>

Note, I'm using this to fetch the data in the controller: @page = Page.find(:all, :conditions => "name = 'some_page'")

<%= debug(@page) %> shows a valid record returned in the Page object, so I'm unclear why the for loop would be failing?

thanks, Eben

The problem is that in your show action, @page is a single record. In your “about” action, you are using :all in find, which returns an array. If you just want a single record, change it to :first. If you want to use the array, do it like this:

  <% @pages.each do |page| -%>
<% for column in Page.content_columns %>
<p>
<b><%= column.human_name %>:</b> <%=h page.send(column.name) %>
</p>
<% end %>
<% end -%>

eben wrote:

makes sense, thanks for your time

Eben