Skip to content

bhbryant/nested_form

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nested Form

A Rails plugin to conveniently manage multiple nested models in a single form. It does so in an unobtrusive way through jQuery.

This is in early development, so some of this documentation is not yet applicable.

Install

This is currently only available as a plugin.

script/plugin install git://github.com/ryanb/nested_form.git

Usage

When installing this plugin it will add a file at public/javascripts/nested_form.js which should be included after jQuery.

<%= javascript_include_tag 'jquery', 'nested_form' %>

You can then generate a nested form using the nested_form_for helper method.

<% nested_form_for @project do |f| %>

Use this form just like normal, including the fields_for helper method for nesting models. The benefit of this plugin comes from the link_to_add and link_to_remove helper methods on the form builder.

<% f.fields_for :tasks do |task_form| %>
  <%= task_form.text_field :name %>
  <%= task_form.link_to_remove "Remove this task" %>
<% end %>
<%= f.link_to_add "Add a task", :tasks %>

This generates links which dynamically add and remove fields.

Partials

It is often desirable to move the nested fields into a partial to keep things organized. If you don’t supply a block to fields_for it will look for a partial and use that.

<%= f.fields_for :tasks %>

In this case it will look for a partial called “task_fields” and pass the form builder as an f variable to it.

Arguments

Wrapping tag

Default operation is to wrap field in div tag. Alternate tags can be specified, by adding the tag argument to the fields_for and link_to_add.

<% f.fields_for :tasks, :tag => 'li'  do |task_form| %>
  <%= task_form.text_field :name %>
  <%= task_form.link_to_remove "Remove this task" %>
<% end %>
<%= f.link_to_add "Add a task", :tasks, :tag => 'li' %>

Special Thanks

This plugin is based on the solution by Tim Riley in his complex-form-examples fork.

github.com/timriley/complex-form-examples/tree/unobtrusive-jquery-deep-fix2

About

Rails plugin to conveniently handle multiple models in a single form.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%