hi, this is how I solved it:
lets say I have one model, "page" with a list of pages, and another
model "director" with a list of company directors.
A page has a title, body, etc plus an optional field called
"modelmethod", which expects a string in the format
"Model|method|
partial".
On the page that should contain the list of directors I enter the
string "Director|get_list|directors_list", meaning for the Director
model, use the get_list method to get a collection, and display it
with the _directors_list.rhtml partial.
The Director model has a method:
def self.get_list
find(:all, :order => "position")
end
On the page controller, I parse the modelmethod string, call the
method and pass the results (@data and @data_partial) to the view, as
follows:
unless @page.modelmethod.nil?
data_model, data_method, @data_partial @page.modelmethod.split(/\s*\|\s*/)
unless data_model.nil? || data_method.nil? || @data_partial.nil?
@data = Object.const_get(data_model).send(data_method)
end
end
In the page view, i call the partial with the data
<% unless @data.nil? %>
<%= render :partial => @data_partial, :object => @data
%>
<% end %>
And the partial template, named _directors_list.rhtml displays the
list
<% for director in directors_list %>
etc
Thus, now I can configure my "pages" through the admin gui to show
content from other tables.
Is this cool? or is it a bad idea for some reason(s)?
On Mar 8, 11:06 am, Jonathan Linowes
<lino...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hi, this is a design question
>
> I''ve setup a micro-cms for my About pages etc using a
"pages" table
> containing name, title, body, parent_id, position, and the model is
> setup as both acts_as_tree and acts_as_list. The pages table has the
> page content, and also is used to define the menus for the tree. This
> is working, so far so good.
>
> Some of these pages might contain a list of items from another table,
> for example, Board of Directors, shown after the body text. One way
> I''m thinking to handle this is
>
> add fields to pages for sub-content model, method name, and partial,
> and have the pages controller call the method and pass the data along
> to the display_page template (which calls the partial)
>
> What do you think?
>
> An alternative would be to add a controller/action for the other
> content and just use the page as a placeholder so it still shows in
> the menu. And add a url field to the page model (or even separate
> controller, action fields), thats used in the menu link.
>
> linoj
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---