Combining Two Models into one form

Hey Guys.

I’m very new with rails and I’ve been building a CMS application
backend.

All is going well, but I would like to know if this is possible?

Basically I have two models:

@page { id, name, number }

@extended_page { id, page_id, description, image }

The idea is that there are bunch of pages but NOT ALL pages have
extended_content. In the event that there is a page with extended
content then I want to be able to have a form that allows for editing
both of them.

In the controller:

@page = Page.find(params[:id])
@extended= Extended.find(:first, :conditions => [“page_id =
?”,@page.id])
@combined = … #merge the two somehow

So in the view:

<%- form_for @combined do |f| %>

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :description %>
<%= f.text_field :description %>

<% end >

This way in the controller, there only has to be one model that will be
updated (which will update to both).

Is this possible?

On Tue, Jun 1, 2010 at 4:49 AM, Matias N. [email protected]
wrote:

@extended= Extended.find(:first, :conditions => ["page_id =

<%= f.label :description %>
<%= f.text_field :description %>

<% end >

This way in the controller, there only has to be one model that will be
updated (which will update to both).

Is this possible?

Yes it is !

First of all, you should use associations so that one Page has_many
:extendeds (this is where you see that you should find a better name
!).

Then, you should check out this railscast:

It explains exactly what you are trying to achieve.


Gael Muller

Awesome! Thank You! :slight_smile: