Re: extending controllers

William Pratt
Sun, 30 Sep 2007 17:51:29 -0000

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 %>

<%= column.human_name %>: <%=h
page.send(column.name) %>

  <% end %>
<% end -%>



eben wrote:
> 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 %>
>
> <%= column.human_name %>: <%=h
@page.send(column.name) %>
>
> <% 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
>
> On Sep 30, 1:16 pm, Frederick Cheung
<frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> wrote:
>
>> 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
>>
>
>
> >