Comment mettre en place sous la forme de hachage dans les Rails?
J'ai des données associées à un modèle qui est dans une table de hachage. Le hachage est généré dans le contrôleur: @hash
.
Quelle est la bonne façon de créer une forme de ces données?
Je suis venu avec le code suivant:
<% @hash.keys.each do |key| %>
<div class="field">
<%= f.label key %><br />
<%= text_field_tag "hash_" + key, @hash[key] %>
</div>
<% end %>
Cela génère la forme, mais il se crée chaque élément de hachage comme une variable distincte dans le formulaire. Cela ne semble pas être la bonne façon de présenter les données en arrière. Je voudrais récupérer les données d'un algorithme de hachage, et d'y accéder avec params[:hash]
.
Quelle est la meilleure façon de le faire?
De travail dans les Rails 3.07, Ruby 1.9.2.
Grâce.
EDIT: je devrais l'ont fait comprendre. Ce code est à l'intérieur d'un formulaire généré par un modèle. Ainsi, le formulaire doit soumettre tous les champs pour le modèle, plus la au-dessus de hachage.
Je vais avoir un problème similaire. Mon objet vient d'un Sèche-modèle de Validation/objet.
OriginalL'auteur B Seven | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
Sur cette base l'article vous devez modifier le nom dans text_field_tag à
Il a travaillé. Merci pour la référence.
OriginalL'auteur nemesv
Ma réponse n'est pas strictement sur le sujet, mais je tiens à vous recommander de prendre un coup d'oeil à http://railscasts.com/episodes/219-active-model. Vous pouvez utiliser Activerecord Api pour simuler un objet de modèle avec Rails 3. Faire que vous pourriez simplement faire quelque chose comme
et en laissant le remplissage de votre objet de Rails Api.
Intéressant. Je ne suis pas sûr si cette approche ne fonctionnera parce que ce code est en fait à l'intérieur d'un formulaire généré par un modèle.
Ensuite, vous pouvez essayer d'utiliser un fields_for... pour être honnête, je n'ai pas essayé, mais je ne vois pas de problème particulier.
OriginalL'auteur lucapette
Lorsque vous utilisez les assistants qui se terminent par
_tag
c'est ce qui se passe.Au lieu de
text_field_tag ...
utilisationf.text_field ...
.Afin d'obtenir une valeur de hachage comme
params => {:hash => {:field1 => "", :field2 => ""}}
vous devez appairer jusqu'form_for
avecf.input_field_type
au lieu de simplementinput_field_tag
.Voir la différence?
OriginalL'auteur jefflunt