My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Links

Install

 git clone git://github.com:sudothinker/multimodel-forms.git

About

This plugin allows multiple models to have a place in one form. For example, if an article model has_many links. The links can be edited, created, deleted and even sorted (acts_as_list) from the article edit/new form. Included ajax helpers so links can be added and deleted client side and db is only touched when form is submitted.

This is largely derived from Ryan Bates' tutorial over at: http://railscasts.com/episodes/75

article.rb

class Article < ActiveRecord::Base
  has_many_with_attributes :links
end

--
link.rb

class Link < ActiveRecord::Base
  belongs_to :article
end

Can now add a view partial to render the article form and edit the associated links.

articles/_form.rhtml

<label>Title</label>
<%= f.text_field :title %>

<h3>Links</h3>
<div id="links">
  <%= render :partial => 'links/link', :collection => @article.links %>
</div>

<%= add_link "Add link", :link %>
links/_link.rhtml

<p class="link">
<% fields_for_associated :article, link do |l_form| %>
  <%= l_form.text_field :url, :index => nil %>
  <%= delete_link_for(link, "Delete", l_form) %>
<% end %>
</p>

SVN log

  • Added datetime field to links to show that you have to use :index => '' instead of :index => nil for date_select helper tag
  • Added validation to links and overrode field_error_proc to show associated validations working from within article model
  • Applied patch to allow for CamelCase model names
  • Added support for acts_as_list in through associations. See the sample project for usage. If the through relation has a position column then these will automatically be updated when the form is submitted. The view can also be sorted with drag and drop (implemented in the sample project
Powered by Google Project Hosting