Jeśli mam metodę w innym kontrolerze do tej, w której piszę i chcę ją nazwać, czy jest to możliwe, czy też powinienem rozważyć przeniesienie tej metody do pomocnik?Wywołanie metody z innego kontrolera
Odpowiedz
Można technicznie utworzyć wystąpienie innego kontrolera i metody wywołania, ale jest on nużący, podatny na błędy i wysoce niezalecany.
Jeśli ta funkcja jest wspólna dla obu kontrolerów, prawdopodobnie powinieneś mieć ją w ApplicationController
lub innym kontrolerem nadklasy swojego stworzenia.
class ApplicationController < ActionController::Base
def common_to_all_controllers
# some code
end
end
class SuperController < ApplicationController
def common_to_some_controllers
# some other code
end
end
class MyController < SuperController
# has access to common_to_all_controllers and common_to_some_controllers
end
class MyOtherController < ApplicationController
# has access to common_to_all_controllers only
end
Jeszcze innym sposobem, aby to zrobić jak jimworm sugerowane jest użycie modułu do wspólnej funkcjonalności.
# lib/common_stuff.rb
module CommonStuff
def common_thing
# code
end
end
# app/controllers/my_controller.rb
require 'common_stuff'
class MyController < ApplicationController
include CommonStuff
# has access to common_thing
end
Lub zawarte w 'module'. – jimworm
'include GoodSuggestion' Thanks @jimworm – edgerunner
Tworzenie instancji innego kontrolera ???? Arrrrrrrgggh (istotnie). Inna opcja, ponieważ pytanie jest tak niejasne: przenieś kod do modeli. – nathanvda
spróbować i stopniowo przesuwać ci metody modeli, jeśli nie stosuje się do modelu następnie pomocnika i jeśli nadal musi być dostępne gdzie indziej umieścić w ApplicationController
Nigdy nie przenosiłbym kodu z kontrolera do helpera, a raczej modułu mieszkającego w '/ lib'. Tylko kod widoku powinien mieszkać w pomocniku. – nathanvda
Umieszczenie czegoś w pomocniku jest krótkotrwałe. dojdziesz do punktu, w którym nie musisz wstawiać biblioteki/rzucając wszystko do modułu, też nie jest zbyt dobry. –
Wolę używać modułów niż pomocników, ponieważ są one prawdziwe OO, mogę włączyć/rozszerzyć je do woli. Mogę grupować rzeczy, które mają rzeczywiste znaczenie. Pomocnicy to tylko wiadra. Zalecam używanie ich tylko do metod związanych z widokiem. Nie jestem pewien, co masz na myśli mówiąc "dojdziesz do rzeczy ...". – nathanvda
ja nie znać jakiekolwiek szczegóły twojego problemu, ale może ścieżki mogą być rozwiązaniem w twoim przypadku (szczególnie jeśli jest to działanie RESTful).
Jeśli wymóg ma do czynienia z niektórych operacji DB, to można napisać wspólny funkcji (metoda klasy) wewnątrz tego modelu. Funkcje zdefiniowane w modelu są dostępne dla wszystkich kontrolerów. Ale to rozwiązanie ma zastosowanie do wszystkich przypadków.
- 1. Wywołanie metody kontrolera widoku z delegata aplikacji
- 2. Wywołanie metody pomocnika z kontrolera Rails 3
- 3. Wywołanie metody Delphi z innego programu Delphi
- 4. before_filter z innego kontrolera
- 5. Wywołanie metody kontrolera w łączu_do widoku
- 6. Render akcji kontrolera z innego kontrolera
- 7. Wywołanie metody kontrolera nadrzędnego z dyrektywy w AngularJS
- 8. Symfony 2 - Wywołanie metody kontrolera z polecenia konsoli
- 9. Wywołanie jednego polecenia z innego
- 10. Wywołanie interfejsu API WWW z kontrolera MVC
- 11. Renderowanie widoku innego kontrolera
- 12. Przekieruj jednego kontrolera do innego kontrolera
- 13. wywołanie metody z działaniem sterownika w emberjs
- 14. Możliwe wywołanie metody Javascript w kontekście innego okna?
- 15. Wywołanie metody asynchronicznej z metody non-asynchronicznym
- 16. Wywołanie metody fragmentacji z adaptera
- 17. Wywołanie metody BHO z Javascript?
- 18. Wywołanie połączenia() z metody statycznej
- 19. Jak renderować części z innego kontrolera?
- 20. Funkcja wywołania z innego kontrolera Angular Js
- 21. Używanie kontrolera podrzędnego z innego modułu
- 22. Render Częściowy widok z innego kontrolera
- 23. Szyny: Renderuj plik .js.erb z innego kontrolera?
- 24. Przekierowanie ASP.Net MVC z częściowego widoku z kontrolera do pełnego widoku z innego kontrolera
- 25. Wywołanie akcji kontrolera z widoku w Ember
- 26. Wywołanie klas w/lib z działań kontrolera
- 27. Wywołanie funkcji kontrolera z dyrektywy o parametrach
- 28. AngularJS - Wywołanie funkcji kontrolera z usługi
- 29. .NET Kontroler instancji MVC wewnątrz innego kontrolera
- 30. Wywołanie kernela OpenCL z innego kernela OpenCL
Czy możesz dodać fakty do problemu, który chcesz rozwiązać, wywołując metodę innego kontrolera? Obecnie jest dość ogólnikowa, a rozwiązanie będzie zależało od problemu. – mliebelt
Rzeczywiście, proszę opracuj, co próbujesz rozwiązać. co robi wspólna metoda? – nathanvda