Voici un morceau de code que j'utilise maintenant:
<%= f.select :project_id, @project_select %>
Comment le modifier pour que sa valeur par défaut soit égale à params[:pid]
lorsque la page est chargée?
ruby-on-rails
totocaster
la source
la source
Réponses:
Cela devrait le faire:
la source
options_for_select
c'est mieux. C'est bon pour n'importe quelle situation, bon pour l'édition de formulaire aussi.Utilisez le bon attribut de l'instance actuelle (par exemple
@work.project_id
):la source
select_tag
aussi. Merci, cela m'a vraiment aidé aussi.options_for_select(..., f.object.project_id )
Rails 3.0.9
la source
value3], default
Le problème avec toutes ces réponses est qu'elles définissent le champ sur la valeur par défaut même si vous essayez de modifier votre enregistrement.
Vous devez définir la valeur par défaut sur votre valeur existante, puis la définir uniquement sur la valeur par défaut réelle si vous n'avez pas de valeur. Ainsi:
Pour ceux qui ne sont pas familiers avec
f.object.field
vous, utilisez toujoursf.object
puis ajoutez votre nom de champ à la fin de celui-ci.la source
select2
plugin JS. Fonctionne parfaitement si vous créez ou modifiez des enregistrements avec le même formulaire et utilisez select2, en particulier avec du texte d'espace réservé.Essaye ça:
la source
params[:pid]
n'a pas fonctionné, mais votre exemple a fonctionné.si params [: pid] est une chaîne, qui si elle provient d'un formulaire, c'est le cas, vous devrez probablement utiliser
pour l'élément correct à sélectionner dans la liste de sélection
la source
@project
variable avec un identifiant de la table de base de données, au lieu d'un titre, ce code a fonctionné ajouté au dos de l'form.select
aide:selected: @project
Merci @danengleJ'ai trouvé une solution et j'ai trouvé que je suis assez inexpérimenté en RoR.
À l'intérieur du contrôleur qui gère la vue décrite ci-dessus, ajoutez ceci:
la source
la source
Je n'ai pas pu faire fonctionner cela et j'ai trouvé que je devais ajouter l'attribut html "sélectionné" non seulement à la
<option>
balise correcte mais aussi à la<select>
balise. Les documents de MDN sur l'attribut sélectionné de la balise de sélection disent:Cela signifie que le code devrait ressembler à:
la source
la source
Vous pouvez également définir l'attribut: project_id dans le contrôleur, car le premier argument de f.select extrait cet attribut particulier.
la source
Si vous essayez d'imprimer l'objet f, vous verrez qu'il y a f.object qui peut être sondé pour obtenir l'élément sélectionné (applicable pour tous les rails version> 2.3)
donc, utilisez le script suivant pour obtenir la bonne option sélectionnée:
la source
C'est déjà expliqué, va essayer de donner un exemple
que la liste de sélection soit
Ainsi, le code suivant entraîne
Donc, pour faire une option sélectionnée par défaut, nous devons utiliser selected: value .
si can_vote? renvoie vrai, il définit sélectionné: 1 puis la première valeur sera sélectionnée, sinon la seconde.
si les options de sélection ne sont qu'une liste de tableaux au lieu de hast, la sélection sera juste la valeur à sélectionner, par exemple si
maintenant le sélectionné prendra juste
la source
La réponse de Mike Bethany ci-dessus a fonctionné pour définir une valeur par défaut lorsqu'un nouvel enregistrement était en cours de création et conserver la valeur que l'utilisateur a sélectionnée dans le formulaire d'édition. Cependant, j'ai ajouté une validation de modèle et cela ne m'a pas permis de soumettre le formulaire. Voici ce qui a fonctionné pour moi d'avoir une validation de modèle sur le terrain et d'afficher une valeur par défaut ainsi que la valeur sélectionnée par l'utilisateur en mode édition.
Validation du modèle
la source
Cela devrait fonctionner pour vous. Il passe simplement
{:value => params[:pid] }
à la variable html_options.la source