2013-07-23 4 views
0

j'ai essayé d'installer un attribut virtuel pour EBM:Attribut virtuel, nombre incorrect d'arguments

<%= form_for Ebm.new do |f| %> 
<td> <%= f.text_field :ebm_findid %></td> 
...... 

Et dans mon modèle EBM:

class Ebm < ActiveRecord::Base 
attr_accessible :content, :extra, :number, :text 

def ebm_findid(name) 
    self.ebm_id = Ebm.find_by_name(name) 
end 
end 

Mais en quelque sorte que je reçois l'erreur:

ArgumentError in Categories#index 

Showing C:/Sites/ruble21.07abends/app/views/ebms/_favorite.html.erb where line #21 raised: 

wrong number of arguments (0 for 1) 
Extracted source (around line #21): 

18: <% end %> 
19: <tr> 
20: <%= form_for Ebm.new do |f| %> 
21:  <td> <%= f.text_field :ebm_findid %></td> 

Que dois-je changer?

+0

Pourriez-vous coller le chemin complet? –

+2

Parce que vous passez un paramètre dans la méthode, que vous n'avez pas passé lors de l'appel de cette méthode. –

+0

ok j'ai ajouté à mon modèle def ebm_findid end, et maintenant ça marche, mais quand j'essaie de le sauvegarder j'obtiens l'erreur maintenant Impossible d'assigner en masse des attributs protégés: ebm_findid? Devrais-je ajouter ebmfindid à attr_accessor? –

Répondre

1

Pour corriger l'erreur NoMethodError in EbmsController#create undefined method 'find_by_name':

find_by_name attend Ebm avoir attribut name. Assurez-vous de l'avoir.

+0

Ah oui! Je l'ai oublié! Mais maintenant une nouvelle erreur se produit: NoMethodError dans EbmsController # create méthode non définie 'ebm_id = 'pour #

+1

Cela signifie que vous n'avez pas défini d'accesseur d'attribut' ebm_id'. Si vous avez une telle colonne dans la base de données, ajoutez simplement 'attr_accessor: ebm_id' – roody

Questions connexes