# Has\_and\_belongs\_to\_many

**URL:** <https://www.ruby-forum.com/t/has-and-belongs-to-many/103519>\
**Category:** IT\
**Created:** [May 7, 2007, 3:03pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519 "2007-05-07T15:03:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 7, 2007, 3:03pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519/1 "2007-05-07T15:03:08Z")

</div>

Ciao a tutti, ho una tabella categories e una tabella links collegate  
con una tabella join categories\_links. Le due tabella sono collegate tra  
loro dalle relazioni:

class Category \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :links

class Link \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :category

Nella pagina dove inserisco un nuovo link vorrei creare una checkbox per  
ogni categoria. Io ho provato ad aggiungere

\<% for cat in @links.category %\>  
…  
\<% end %\>

Mi da questo errore undefined method `category’ for nil:NilClass

Volevo sapere come posso fare a ciclare sulle categorie attraverso la  
relazione has\_and\_belongs\_to\_many???  
Purtroppo la mia condizione di newbbie non mi permette di arrivarci da  
solo ☹ …

Grazie per le risposte saluti

Taddei Fabrizio

```
  ___________________________________

```

L’email della prossima generazione? Puoi averla con la nuova Yahoo!  
Mail: [Yahoo Search - Ricerca nel Web | Motore di Ricerca](http://it.docs.yahoo.com/nowyoucan.html)

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 7, 2007, 3:32pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519/2 "2007-05-07T15:32:56Z")

</div>

dovresti postare controller, model, etc.  
per adesso il tuo problema Ã¨ che non ti “arrivano” i @links al template

Fabrizio T. wrote:

> \<% for cat in @links.category %\>  
> …  
> \<% end %\>
> 
> Mi da questo errore undefined method `category’ for nil:NilClass

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 7, 2007, 3:37pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519/3 "2007-05-07T15:37:11Z")

</div>

sbaglio o devi “pluralizzare” i nomi dei model?  
has\_and\_belongs\_to\_many :categories

Il 07/05/07, Ivan L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> >

–  
everything has got to end sometime we were satellites drifting off into  
space  
vega 4 - burn and fade away

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 7, 2007, 3:48pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519/4 "2007-05-07T15:48:28Z")

</div>

tarini wrote:

> sbaglio o devi “pluralizzare” i nomi dei model?  
> has\_and\_belongs\_to\_many :categories

Ho messo categories al posto di category…ma non funziona.

Nei model ho solo:

class Category \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :links

class Link \< ActiveRecord::Base  
has\_and\_belongs\_to\_many :categories

Vi posto la parte di controller links che popola @links:

class Admin::LinksController \< ApplicationController  
ApplicationController

def index  
list  
render :action =\> ‘list’  
end

verify :method =\> :post, :only =\> [:destroy, :create, :update],  
:redirect\_to =\> { :action =\> :list }

def list  
@link\_pages, @links = paginate :links, :per\_page =\> 15  
end

Nel controller categories:

class Admin::CategoriesController \< ApplicationController  
ApplicationController

def index  
list  
render :action =\> ‘list’  
end

verify :method =\> :post, :only =\> [:destroy, :create, :update],  
:redirect\_to =\> { :action =\> :list }

def list  
@category\_pages, @categories = paginate :categories, :per\_page =\> 10  
end

E nella view insert dei link dovrei fare un ciclo sulle categorie e  
creare una checkbox per ogni categoria…

Spero di avervi dato tutte le informazioni di cui avete bisogno e grazie  
per l’aiuto…

Saluti

Fabrizio

---

<div class="post-metadata">

**Author:** ![spliffer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3ab097/32.png) [@spliffer](https://www.ruby-forum.com/u/spliffer)\
**Post date:** [May 7, 2007, 10:27pm UTC](https://www.ruby-forum.com/t/has-and-belongs-to-many/103519/5 "2007-05-07T22:27:02Z")

</div>

On 5/7/07, Fabrizio T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> E nella view insert dei link dovrei fare un ciclo sulle categorie e  
> creare una checkbox per ogni categoria…

Per creare le checkbox per le categorie:

\<% Categories.each do |category| %\>  
  
\<% end %\>

con habtm hai @link.categories per trovare tutte le categorie di un link  
e @  
category.links per trovare tutti i links di una categoria

Ciao,  
Tommaso
