I have a method find_all_media in model abc.rb. Model xyz and abc has relationship,
abc :has_many xyzs and
xyz :belongs_to abc
# abc.rb
method is in abc model
def self.find_all_media(media_name)
if self.media_name == self.xyz.media_name
return media_name
end
end
### view file
<% @abc.xyzs.each do |xyz| %>
<tr>
<td><%=h xyz.media_name %></td>
<td><%=h xyz.type %></td>
<td>I want to call method find all_media here ?? </td>
</tr>
I tried but not working, any
Répondre
On dirait que votre
def self.find_all_media(media_name)
if self.media_name == self.xyz.media_name
return media_name
end
end
méthode est une méthode de classe (auto). Donc, vous essayez d'accéder à vous méthode de classe de votre instance de classe
@abc
Vous avez deux options
1 - Faire la méthode une méthode d'instance (en supprimant le « soi »)
2 - appelez votre méthode comme Abc.find_all_media
Et tout comme une meilleure pratique,
ne pas appeler directement les modèles de votre point de vue, Faites-le par le contrôleur, ou aide
et si votre méthode 'find_all_media' est someting à voir avec la requête de base de données compte
:scope (in rails 3.x) (named_scope in rails 2.x)
HTH
sameera
Utilisez Abc.find_all_media
. Si vous utilisez self
dans le nom de la méthode, cela signifie que cette méthode va être utilisée avec le modèle lui-même, pas avec l'objet. Espérons que ça vous aidera
Dans contrôleur Xyz/@xyz = Abc.find_all_mediae (media_name) Je reçois une variable locale non définie ou une méthode 'media_name'? – user659068
- 1. Comment appeler une méthode?
- 2. Comment appeler une méthode
- 3. Comment appeler une méthode d'aide
- 4. Appeler une méthode
- 5. appeler une méthode statique
- 6. Appeler une méthode publique
- 7. java: appeler une méthode
- 8. Appeler une méthode NSTimer
- 9. Appeler une méthode java
- 10. Comment appeler cette méthode?
- 11. Comment appeler une méthode générique par réflexion
- 12. Comment appeler une méthode Web .NET?
- 13. Objective-C: Comment appeler une méthode instance
- 14. Comment appeler une méthode en utilisant l'intention
- 15. Comment appeler une méthode d'une classe?
- 16. Comment appeler une méthode d'activité d'un BroadcastReceiver?
- 17. Comment appeler une méthode d'une classe différente?
- 18. Comment appeler dynamiquement une méthode en PHP?
- 19. Comment appeler une méthode "normale" via ILGenerator.Emit *?
- 20. Comment appeler une méthode jquery d'une autre?
- 21. Comment appeler une méthode en Java?
- 22. Comment appeler une méthode via un vecteur?
- 23. Comment appeler une méthode de service Web?
- 24. Comment appeler une méthode avec View param
- 25. Comment appeler une méthode de contrôleur WebApi?
- 26. Comment appeler une méthode dans fbDialogNotLogin?
- 27. Comment appeler une méthode surchargée en Java?
- 28. devoirs: comment appeler une méthode java
- 29. comment appeler une méthode avant d'autres méthodes
- 30. Comment appeler une méthode en C#?
Merci Sameera. Pouvez-vous s'il vous plaît dire pourquoi nous utilisons l'auto? Ma question peut être résolue sans utiliser soi-même. Quand nous devrions utiliser la méthode de classe et la méthode d'instance. – user659068
hi @ user659068, Basic is Si votre méthode effectue une action commune sur tous les modèles use class method (Thats why find est une méthode de classe ActiveRecord Ex. User.find) et quand vous voulez faire quelque chose de spécifique à un utilisateur de modèle donné méthode d'instance (Ex get_amount) cette méthode fera en sorte que les objets actuels se chiffrent à @ use1.get_amount sera 10 et @ user2.get_amount aura 20, HTH sameera – sameera207
vérifiez-les http://railstips.org/blog/archives/2009/ 05/11/class-et-instance-methods-in-ruby/http://www.rubyfleebie.com/understanding-class-methods-in-ruby/ – sameera207