label_tag et checkbox_tag problème dans les rails
Je veux que mes cases à cocher pour être utilisable, donc j'ai l'habitude d'ajouter l'étiquette fors les cases de sorte que vous pouvez sélectionner le texte au lieu d'avoir pour "objectif" de la case à cocher.
Problème c'est que si je suis à l'aide d'un ensemble d'attributs de forme dans les rails? J'ai ce code pour l'instant:
%ul
- test_category.test_cases.each do |test_case|
%li
= check_box_tag "job_test_cases[]", "#{test_case.id}", test_case.id
= label_tag "test_case_#{test_case.id}", test_case.name
problème, c'est qu'elle produit ceci:
<li>
<input type="checkbox" value="70" name="job_test_cases[]" id="job_test_cases_" checked="checked">
<label for="test_case_70">Blah blah</label>
</li>
alors que je voulais que ça ressemble à ceci:
<li>
<input type="checkbox" value="70" name="test_case_id[]" id="test_case_70" checked="checked">
<label for="test_case_70">Blah BLah blah/label>
</li>
- Votre sortie n'est pas du tout ce que j'attendais de la façon dont vous utilisez
check_box_tag
:/ Ne semble pas correspondre avec les docs à tous les api.rubyonrails.org/classes/ActionView/Helpers/... - je suis confondu moi-même -_ -
- oh, attendez, je crois que j'ai collé la mauvaise chose..lemme de le modifier
- 1er arg est l'id et le nom, le 2ème est la valeur, le 3ème est temps, il est vérifié (vrai/faux), 4e sont des options. Pas sûr de savoir pourquoi vous avez
test_case.id
comme la 3ème arg et c'est un peu confus pour moi pourquoi votre id/nom de valeurs ne correspondent pas. - est-ce possible? c'est ce que je veux, parce que l'étiquette dépend de l'id. mais je veux le nom d'un tableau pour le backend obtient une collection de test_cases.
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de correspondre à la case avec l'étiquette comme suit:
Dans la case:
J'ai utilisé le check_box_tag, en précisant le nom de l'élément spécifique (ici, le rôle), l'indice de la matrice pour produire de l'id avec une valeur en elle. J'ai passé l' :nom de la valeur de hachage pour remplacer le nom spécifié dans le check_box_tag, de sorte qu'il n'a pas l'id:
qui génère le code HTML suivant:
Dans l'étiquette, j'ai précisé que l'id à l'aide du tableau nom + '_' suivi du nom de l'article (ici), pour bien point à l'id de l'étiquette:
qui génère le code HTML suivant:
Quand le MIS est envoyé au contrôleur, les paramètres ont les champs suivants:
qui est le rôle de noms pour tous les bagages des rôles.
Donc pour votre code, je voudrais essayer les suivantes:
Cela a très bien fonctionné pour moi:
Il n'y a pas besoin de fermer les "faire" bloquer. Il se ferme automatiquement à cause de l'indentation.
Découvrez le dernier exemple de Rails API:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label
Quand vous faites des formulaires imbriqués, vous avez besoin de la
fields_for
assurez-vous que vos champs sont nommés correctement (au lieu de laeach
).Je vous suggérerais d'avoir un coup d'oeil à formtastic et cocoon: qui simplifiera grandement de faire des formulaires imbriqués.
[EDIT: le faire vous-même]
Je ne suis pas sûr que je peux corriger ton code, parce que vous faites quelque chose d'étrangement mal: je ne comprends pas la valeur que vous voulez être éventuellement coché?? Vous n'envoyez pas que dans. Il ne pouvait pas être l'id. Donc, normalement, vous écrivez quelque chose comme:
La correction de votre code serait:
où le champ
is_checked?
retourne une sorte de valeur de type boolean. Je pense qu'il serait utile si vous donnerait un peu plus d'infos à propos de ce que vous essayez de faire.Qui permettrait de générer quelque chose comme
donné
is_checked?
serait de retourtrue
.Si vous voulez explicitement nom
id
etname
différemment, vous aurez besoin de définir de façon explicite, comme