Ce n'est pas le coeur de ton bug, mais si tu veux suivre les conventions la
première table alphabétiquement devrait apparaître en premier dans la nom de
la liaison, ça t'économiserait le :join_table dans tes habtm.

Sinon, si tu veux remplir une association habtm, ce n'est pas comme un
belong_to, ton modèle Policier ne porte pas l'association, il n'y a donc pas
de champs :brevet_id :

<%= collection_select f , :brevet_id, @brevets, :id, :nom , {}, :multiple =>
true %>

Par contre, il existe un raccourcis pour lier par leurs ids les brevets, :
brevet_ids ; donc il faut quelque chose du genre :
<%= collection_select f , :brevet_ids, @brevets, :id, :nom , {}, :multiple
=> true %>

Quand à afficher les résultats, tout dépend du contexte. Dis-en plus...

Michel Belleville


2009/2/25 Alexandre Cartier <[email protected]>

> Bonjour j'ai un petit sousis avec has_and_belongs_to_many
>
> voilà mes 2 déclarations
>
> class Policier < ActiveRecord::Base
>>   has_and_belongs_to_many :brevets, :join_table => "policiers_brevets"
>>   has_many :armes
>>
>>   validates_presence_of :nom, :message => "ne peut être vide"
>>   validates_presence_of :prenom, :message => "ne peut être vide"
>>   validates_presence_of :matricule, :message => "ne peut être vide"
>>   validates_uniqueness_of :matricule,  :message => "doit être unique"
>> end
>
>
> class Brevet < ActiveRecord::Base
>>   has_and_belongs_to_many :policiers, :join_table => "policiers_brevets"
>> end
>>
>
> Voici ma vue de mon formulaire:
>
> <% form_for(@policier) do |f| %>
>>   <center><%= f.error_messages %></center>
>> <table>
>> ...
>>     <tr>
>>         <th>Brevet</th>
>>         <td><%= collection_select f , :brevet_id, @brevets, :id, :nom ,
>> {}, :multiple => true %></td>
>>     </tr>
>>     <tr>
>>         <td colspan="2" style="text-align: center"><%= f.submit
>> button_label %></td>
>>     </tr>
>> </table>
>> <% end %>
>
>
> Question 1 : Cela ne me rempli pas ma DB pourquoi?
> Question 2 : Pour afficher le résultat il faut faire une boucle mais sur
> quoi exactement?
>
> D'avance merci
> Alexandre
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
-~----------~----~----~----~------~----~------~--~---

Répondre à