summaryrefslogtreecommitdiff
path: root/_posts/2010-11-05-rails-3-has_many-through-checkboxes.markdown
blob: dd00f6b173a129b67e9801c9b8942bc0a5772e89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
---
layout: post
title: ! "Rails 3 has_many :through checkboxes"
tags: [ development ]
status: publish
type: post
published: true
---

On Twitter I wrote:

> Rails does it for you, just add sheet_ids[] to the form with the checkboxes and
> it's done! will blog.

Being a music teacher, my fiance needed to keep record of tests her students
perform. Also, each test has several sheets that need mentoring and
monitorization through several parameters. I decided to help and reentered the
Rails world, and since I have found no answer on this topic, I decided to write
it myself.

This situation is a perfect model for using the so well known <a
href="http://railscasts.com/episodes/17-habtm-checkboxes">HABTM checkboxes</a>.

### A closer look at the problem

#### Models

<script src="http://gist.github.com/663287.js"></script>

A pretty basic setup. The <em>venues</em> (the students' tests) include several
<em>sheets</em> for them to study and for the teacher to evaluate,
through <em>exhibitions</em> that have several criteria.

#### View

<script src="http://gist.github.com/663417.js"></script>

I simplified the form just so you see what's at stake. The same principle of
the HABTM checkboxes applies to a has_many :through association. Instead of new
entries in a venues_sheets table, new <em>Exhibitions</em> are created with the
respective foreign ids in them.

The controller needs no mention because it stays the same. It just saves /
updates the model. This is why I love Rails: the hard work is done: you just
need to focus on what matters.