2012-05-31 3 views
2

J'essaie d'ajouter des info-bulles aux entrées en lecture seule qui ne sont pas toujours suffisamment larges pour afficher le contenu complet. Les info-bulles seront utilisées pour afficher le contenu complet lorsque l'utilisateur survole l'entrée.Accéder aux attributs de ressources à partir de Rails Formbuilder

Le problème est que je n'arrive pas à accéder aux attributs de ressource dans la section des paramètres du générateur de formulaire. J'essaie de faire la valeur de l'entrée du titre. Voir le code suivant:

= f.fields_for :invoice_items, @invoice.invoice_items do |item| 
    %tr 
     %td 
     = item.text_field :code, :title => item.name, :rel=>'tooltip', :class => 'uneditable-input span1', :readonly=>'true 

Soulève:

undefined method `name' for #<ActionView::Helpers::FormBuilder:0x007fea1e86f8e8> 

Maintenant que nous avons, nous pouvons voir que l'article n'est pas réellement la ressource, mais la classe de générateur de formulaire. Comment puis-je accéder à la ressource d'origine à partir d'ici?

Répondre

5

Je pense que cela va faire ce que vous voulez:

= f.fields_for :invoice_items, @invoice.invoice_items do |item| 
    %tr 
     %td 
     = item.text_field :code, :title => item.object.name, :rel=>'tooltip', :class => 'uneditable-input span1', :readonly=>'true 

Vous pourriez avoir besoin de prendre le second paramètre, la

@invoice.invoice_items 
+0

merci Impressionnant, item.object.name a fait l'affaire. Comment avez-vous su cela, si je peux demander? @ invoice.invoice_items est nécessaire car il s'agit d'une relation belongs_to/has_many avec la facture. –

+0

Génial, heureux d'entendre ça a fonctionné. En ce qui concerne la façon dont je le savais, j'en ai vu un exemple dans la documentation des relations un-à-plusieurs dans les champs pour le site [rails api site] (http://api.rubyonrails.org/) <% = form_for @ personne do | person_form | %> ... <% = person_form.fields_for: les projets font | project_fields | %> <% si project_fields.object.active? %> Nom: <% = project_fields.text_field: Nom%> <% end %> <% end %> ... <% end %> – Adam

+0

Aah bien grand. Merci encore! :) –

Questions connexes