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?
First off I don’t think you need second model for this. You could simply define method
extended?forPagemodel which returnstrueif all (or any) of the attributes of extended page model are present.Also you may want to look into
fields_forform helper method. Something like this should go into your view: