# Rails 3.1 mostrare nome anzichè id in una index view

**URL:** <https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647>\
**Category:** IT\
**Created:** [September 9, 2011, 6:12pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647 "2011-09-09T18:12:33Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [September 9, 2011, 6:12pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/1 "2011-09-09T18:12:33Z")

</div>

Ho rimesso mano a rails installando la 3.1 e sono subito incappato in un  
problemino apparentemente molto stupido.  
Ho 2 modelli, Bills e Customers in pratica nel modello Bills ho indicato  
un campo customer\_id che corrisponde ad un oggetto Customer. ora vorrei  
che nella Index View di Bills apparisse il nome corrispondente al  
customer\_id, e recuperando del vecchio codice ho fatto questo:

def index  
@bills = Bill.all  
@bills.each do |bill|  
@customer = Customer.find(bill.customer\_id)  
end

```
respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @bills }
end

```

end  
e nell’index.html.erb ho messo:

\<% @bills.each do |bill| %\>

 \<%= @customer.name %\> \<%= bill.invoice\_number %\> \<%= bill.invoice\_date %\> \<%= bill.description %\> \<%= bill.amount %\> \<%= link\_to 'Show', bill %\> \<%= link\_to 'Edit', edit\_bill\_path(bill) %\> \<%= link\_to 'Destroy', bill, confirm: 'Are you sure?', method: :delete %\> \<% end %\>

Che in rails 2.3 mi funzionava perfettamente, ora invece quando vado ad  
aprire l’index nella colonna customer mi restituisce sempre il nome  
corrispondente al customer\_id dell’ultima riga…  
in che cosa sbaglio?

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 9, 2011, 6:17pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/2 "2011-09-09T18:17:50Z")

</div>

Non pi semplice

def index  
respond\_with @bills  
end

e nella view

> \<% @bills.each do |bill| %\>
> 
> \<%= bill.customer.name %\> \<%= bill.invoice\_number %\> ...

?

Il giorno 09/set/2011, alle ore 18:12, Luca C. ha scritto:

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 9, 2011, 6:22pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/3 "2011-09-09T18:22:47Z")

</div>

sicuro che sulla 2.3 funziona esattamente con questo codice?

quando vai a iterare tutte le Bill, ogni volta sovrascrivi la variabile  
@customer, quindi naturale che @customer ritorni solo l’ultimo record  
che hai  
iterato.

non c’ bisogno di farlo, nella view ti baster fare questo:

\<% @bills.each do |bill| %\>  
…  
\<%= bill.customer.name %\>  
…  
\<% end %\>

e naturalmente nella action del controller, ti baster fare:

@bills = Bill.all

ciao,  
A.

Il 09/09/2011 18:12, Luca C. ha scritto:

> def index  
> @bills = Bill.all  
> @bills.each do |bill|  
> @customer = Customer.find(bill.customer\_id)  
> end  
> …

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 9, 2011, 9:34pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/4 "2011-09-09T21:34:59Z")

</div>

Si, non era granchè come codice quello di quel programma… ma almeno  
funziona ancora così.  
Cmq ora provo in questo modo…  
Grazie

Andrea P. wrote in post #1020994:

> sicuro che sulla 2.3 funziona esattamente con questo codice?
> 
> quando vai a iterare tutte le Bill, ogni volta sovrascrivi la variabile  
> @customer, quindi naturale che @customer ritorni solo l’ultimo record  
> che hai  
> iterato.
> 
> non c’ bisogno di farlo, nella view ti baster fare questo:
> 
> \<% @bills.each do |bill| %\>  
> …  
> \<%= bill.customer.name %\>  
> …  
> \<% end %\>
> 
> e naturalmente nella action del controller, ti baster fare:
> 
> @bills = Bill.all
> 
> ciao,  
> A.
> 
> Il 09/09/2011 18:12, Luca C. ha scritto:
> 
> > def index  
> > @bills = Bill.all  
> > @bills.each do |bill|  
> > @customer = Customer.find(bill.customer\_id)  
> > end  
> > …

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 12, 2011, 6:28pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/5 "2011-09-12T18:28:52Z")

</div>

Uhmm così facendo mi esce un bel

undefined method `customer’

quindi c’è quaclosa che non torna… ora mi cerco un pò di  
documentazione…

Andrea P. wrote in post #1020994:

> sicuro che sulla 2.3 funziona esattamente con questo codice?
> 
> quando vai a iterare tutte le Bill, ogni volta sovrascrivi la variabile  
> @customer, quindi naturale che @customer ritorni solo l’ultimo record  
> che hai  
> iterato.
> 
> non c’ bisogno di farlo, nella view ti baster fare questo:
> 
> \<% @bills.each do |bill| %\>  
> …  
> \<%= bill.customer.name %\>  
> …  
> \<% end %\>
> 
> e naturalmente nella action del controller, ti baster fare:
> 
> @bills = Bill.all
> 
> ciao,  
> A.
> 
> Il 09/09/2011 18:12, Luca C. ha scritto:
> 
> > def index  
> > @bills = Bill.all  
> > @bills.each do |bill|  
> > @customer = Customer.find(bill.customer\_id)  
> > end  
> > …

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 12, 2011, 7:00pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/6 "2011-09-12T19:00:55Z")

</div>

controlla i model, hai specificato le relazioni tra customer e bill?

Il 12/09/2011 18:28, Luca C. ha scritto:

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 13, 2011, 9:38am UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/7 "2011-09-13T09:38:46Z")

</div>

Si infatti è quello che mi sono andato a leggere per bene 🙂  
Quello che sbagliavo era un semplice typo dovuto a distrazione  
scrivevo belongs\_to :customers

😛

Duilio R. wrote in post #1021493:

> Ciao Luca,  
> come ha detto Andrea, devi specificare le relazioni nei model.
> 
> class Customer \< ActiveRecord::Base  
> has\_many :bills  
> end
> 
> class Bill \< ActiveRecord::Base  
> belongs\_to :customer  
> end
> 
> Ti consiglio di dare uno sguardo alle guide ufficiali:
> 
> [http://guides.rubyonrails.org/](http://guides.rubyonrails.org/)
> 
> soprattutto le guide sulle Active Record Associations
> 
> [Active Record Associations — Ruby on Rails Guides](http://guides.rubyonrails.org/association_basics.html)

---

<div class="post-metadata">

**Author:** ![lucac81](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/71e660/32.png) [@lucac81](https://www.ruby-forum.com/u/lucac81)\
**Post date:** [September 12, 2011, 7:12pm UTC](https://www.ruby-forum.com/t/rails-3-1-mostrare-nome-anziche-id-in-una-index-view/211647/8 "2011-09-12T19:12:18Z")

</div>

Ciao Luca,  
come ha detto Andrea, devi specificare le relazioni nei model.

class Customer \< ActiveRecord::Base  
has\_many :bills  
end

class Bill \< ActiveRecord::Base  
belongs\_to :customer  
end

Ti consiglio di dare uno sguardo alle guide ufficiali:

> **[Ruby on Rails Guides](https://guides.rubyonrails.org/)**
>
> Ruby on Rails Guides

soprattutto le guide sulle Active Record Associations

> **[Active Record Associations — Ruby on Rails Guides](https://guides.rubyonrails.org/association_basics.html)**
>
> Active Record AssociationsThis guide covers the association features of Active Record.After reading this guide, you will know: How to declare associations between Active Record models. How to understand the various types of Active Record...
