2010-11-19 4 views
2

Bon alors je suis tout à fait nouveau pour Rails et essaie de faire ce qui suit sans succès:Rails valeur réglée Vue partielle de champ de formulaire

J'ai un objet (de mon dossier actif) contenant un projet qui contient n sous-projets, qui contiennent n tâches. Maintenant, pour chacun d'eux, je veux une vue partielle.

Je rends du projet voir le sous-projet avec le code suivant:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

Au sein de mon sous-projet appelé vue partielle _subproject.rhtml (en ajoutant le code à un bon Rails ol 1.2.3 projet), je ne peux accéder aux données comme ceci:

<%= subproject.name %> 

qui imprimera le nom bien, mais lorsque je tente de générer un champ de texte cela ne fonctionnera pas:

<%= text_field 'subproject', 'name' %> 

Mais cette volonté:

<%= text_field 'subproject', 'name', :value => subproject.name %> 

Qu'est-ce que je fais mal? Éditer: Le titre modifié en raison de mon problème ne passe pas la valeur mais l'affiche dans un champ de formulaire.


Edit2: Comme demandé mon code de contrôleur:

@project = Project.find(params[:id]) 

Répondre

3

Vous pouvez écrire ceci:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

comme

<%= render :partial => @project.sub_projects %> 

Cela rend chaque projet sous la sub_projects/_sub_project.html.erb partiel. Un petit raccourci.

Ce:

<%= text_field 'subproject', 'name' %> 

Says créer un text_field appelé: sous-projet [nom], mais ne donne pas une valeur. Vous devez transmettre la valeur que vous voulez définir (le code qui fonctionne).

La façon la plus idiomatiques de le faire est maintenant avec form_for:

<% form_for @subproject do |f| %> 
    <%= f.text_field :name %> 
<% end %> 

Ou si vous utilisez formtastic (https://github.com/justinfrench/formtastic), ce qui est fantastique, vous d écrire:

<% semantic_form_for @subproject do |f| %> 
    <%= f.input :name %> 
<% end %> 

J'espère que cela aide!

+0

merci pour vos suggestions J'ai implémenté le plus beau formulaire pour le code est cependant, que la valeur n'est toujours pas définie. Lorsque j'utilise le code dans la vue partielle ci-dessus (celle qui génère le code html du projet), la valeur est définie. Savez-vous pourquoi cela arrive? – Mark

+0

affichez votre code de contrôleur et votre code d'affichage. – jonnii

+0

Mon code d'affichage que j'ai déjà posté, dans mon contrôleur dans la mesure où mes connaissances Ruby me dit qu'une variable membre est utilisée pour contenir la valeur et est ensuite utilisée dans la vue. Mais quand j'essaie de rendre partiel dans une vue, mon «sub partial» ne semble pas rendre le chemin tel que documenté. Et j'utilise v1.2.3 de Rails (plus je suis assez nouveau pour Ruby (on Rails)) .. – Mark

Questions connexes