2010-11-16 3 views
0

-je créer une forme multi-édition dans des rails, comme si:Comment créer une forme multi-édition dans des rails

<form> 
<input type='text' name='input1'></input> 
<input type='text' name='input2'></input> 
<input type='text' name='input3'></input> 
<input type='text' name='input4'></input> 
<input type='text' name='input5'></input> 
<br> 
<input type='text' name='input1'></input> 
<input type='text' name='input2'></input> 
<input type='text' name='input3'></input> 
<input type='text' name='input4'></input> 
<input type='text' name='input5'></input> 
<br> 
<input type='text' name='input1'></input> 
<input type='text' name='input2'></input> 
<input type='text' name='input3'></input> 
<input type='text' name='input4'></input> 
<input type='text' name='input5'></input> 
<br> 

... et ainsi de suite, puis sur le bouton « <submit> » sera à la fin. Un clic sur le bouton d'envoi à la fin devrait collecter toutes les valeurs et les analyser dans le contrôleur.

J'ai juste besoin de savoir comment générer le formulaire multi-édition dans la vue. De plus, chaque rangée est unique. Je devrais aussi savoir comment attribuer un identifiant unique à chacune des balises d'entrée, je suppose; J'ai une valeur d'identifiant unique que je pourrais utiliser.

Répondre

0

Ceci est trivial à accomplir, mais nous avons besoin de plus d'informations. Comment ces champs sont-ils liés à vos modèles? Est-ce un modèle avec de nombreux champs, de nombreuses instances d'un modèle ou autre?


Qu'est-ce que vous voulez faire dans cette situation est d'utiliser un générateur de formulaire . Il va générer des champs d'entrée selon une convention de nommage qui sera analysée dans un format beaucoup plus utile quand il arrive au contrôleur. Depuis que je n'ai pas d'informations sur vos modèles, je vais utiliser un exemple hypothétique:

class Post < ActiveRecord::Base 
    attr_accessible :title, :body, :author, :published_at 
end 

Créer le formulaire en utilisant l'aide form_for. Il vous donnera un objet formbuilder pour créer les champs de saisie.

<% form_for :post do |f| -%> 
    <p> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
    </p> 
    <p> 
    <%= f.label :body %> 
    <%= f.text_area :body %> 
    </p> 
    <p> 
    <%= f.label :author %> 
    <%= f.text_field :author %> 
    </p> 
    <p> 
    <%= f.label :published_at %> 
    <%= f.datetime_select :published_at %> 
    </p> 
<% end -%> 

Le principal avantage de l'utilisation des aides est l'attribut name des entrées qu'il génère. Puisque body appartient à un formulaire pour post, il recevra l'attribut de nom post[body]. Ces attributs seront analysés dans le hachage suivant:

:post => { 
    :title => "This is the title", 
    :body => "this is the body", 
    :author => "John Doe", 
    :published_at => "Mon Nov 15 2010 19:23:40 GMT-0600 (CST)" 
} 

Cela signifie que vous n'avez pas besoin de copier manuellement les champs dans un modèle. Vous pouvez juste passer directement à la méthode Model#new:

@post = Post.new(params[:post]) 

puis effectuez vos vérifications de validation. Cette convention devient indispensable lorsque vous commencez à imbriquer des modèles les uns dans les autres.

See here pour un guide plus complet pour former des aides.

+0

un modèle avec de nombreux champs. –

Questions connexes