2010-10-25 3 views
0

J'ai une liste d'utilisateurs qui ont demandé l'accès à mon application.Dois-je toujours utiliser un formulaire dans une interface tabulaire dans Rails?

Ils apparaissent dans une table à l'intérieur d'une vue:

<table> 
    <thead> 
     <th>Company</th> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Email</th> 
     <th>Role</th> 
     <th>Action</th> 
    </thead> 
    <% for ar in @brand.access_requests %> 
     <% user = ar.user %> 
     <tr id="user_<%= user.id %>"> 
      <td><%= user.company %></td> 
      <td><%= user.first_name %></td> 
      <td><%= user.last_name %></td> 
      <td><%= user.email %></td> 
      <td><%= collection_select :role, :id, Role.all, :id, :name %></td> 
      <td><%= link_to "Create", brand_responsibilities_path(@brand), { :remote => true, :method => :post } %></td> 
     </tr> 
    <% end %> 
</table> 

Je veux attribuer un rôle à chaque utilisateur, puis approuver cet utilisateur.

Évidemment cela ne fonctionne pas, parce que je ne sais pas comment faire référence au champ "role_id" de mon link_to.

Comment puis-je inclure une valeur provenant d'un autre champ dans mon fichier link_to? Y a-t-il un moyen de faire un ": avec" ou quelque chose comme ça? Je veux passer tout ce qui est choisi dans la boîte de sélection pour:

brand_responsibilities_path(@brand) 

Je sais que cela fonctionnerait si je créé un formulaire pour chaque ligne unique, mais est-ce surpuissant, ou la voie Rails? Toute aide est sérieusement appréciée.

+0

Y a-t-il une étiquette de formulaire quelque part ici? Je vois que vous publiez via un lien, mais ne voyez pas que vous êtes en train de sérialiser les données du formulaire. Utilisez-vous Javascript? Qu'est-ce que je rate? –

+0

C'est juste Steve, je ne suis pas en train de le sérialiser. Je voulais initialement le passer avec des paramètres seulement dans le link_to, mais je ne sais pas comment utiliser Javascript dans un link_to. – AKWF

Répondre

1

J'utiliserais certainement le formulaire. La seule façon qui me vient à l'aide d'un lien est avec javascript. Apparemment quand vous faites link_to: method =>: post, Rails crée un formulaire avec javascript !. Donc, je pense qu'il est nettement plus propre d'utiliser le formulaire:

<% form_for user do |f| %> 
    <%= f.collection_select :role_id, Role.all, :id, :name %> 
<% end %> 
+0

Le seul problème ici est où puis-je mettre le formulaire soumettre le bouton/lien? Je veux que ce soit dans une autre colonne. Est-il même permis en HTML d'incorporer des formulaires dans des tables à l'extérieur des limites d'une étiquette TD? – AKWF

+0

Collez le formulaire en dehors de la table. Vous pouvez accrocher le lien en utilisant Javascript et déclencher l'action de soumission du formulaire. Je ne sais pas si vous utilisez Prototype de jQuery, mais dans les deux cas, configurez simplement un gestionnaire 'click()' pour regarder le lien. Ensuite, dans le gestionnaire de liens, vous soumettez le formulaire. Cependant ... cela peut être quelque peu hostile à l'accessibilité. C'est votre appel de design. –

+0

Ok, reculer, penser ... Vous voulez que chaque rangée ait une forme séparée. Mon interprétation est que vous pouvez mettre un formulaire dans une cellule de tableau tant qu'il est complètement contenu dans le TD. Si vous voulez un formulaire par ligne, cela fonctionnera. Sinon, faites comme je l'ai dit avant et déplacez la charge sur le Javascript pour comprendre ce qui est soumis. –

Questions connexes