mamy sobie kontroler, ktory dziedziczy po ApplicationController
class KontaktController < ApplicationController
ApplicationController ma w sobie:
helper :all # include all helpers, all the time
co znaczy (tak mi sie wydaje), ze dolacza do ApplicationController wszystkie helpery z katalogu Helpers, tak?
Wiec dlaczego zeby skorzystac z helpera: test_helper w KontaktController musze zrobic indcludea?
class KontaktController < ApplicationController
include TestHelper
teraz wszytko dobrze dziala.
Przeciez jak KontaktContoller dziedziczy po ApplicationController, ktory zawiera wszystkie helpery to powinno sie dac odwolywac do nich bez includeow…?
Helpery służą do wspomagania widoków, nie kontrolerów.
helper :all nie includuje nic w kontrolerach (zauważ, że w każdym z widoków bez problemu możesz odwołać się do wszystkich metod helperów). Jest bardzo niewiele sytuacji, w których konieczne byłoby stosowanie helperów w kontrolerach - pomyśl czy na pewno musisz to robić a jeśli tak to po prostu sam je dołącz, właśnie tak jak robisz to teraz.
Jak chcesz mieć helpery widoczne w kontrolerze, to zobacz metodę helpet_method.
Jeżeli chodzi o drugą część pytania, to jeżeli masz helper :all i zadeklarujesz 2 metody o takiej samej nazwie, to jedna z metod nadpisze tą drugą - w zależności od tego, który helper zostanie wczytany jako pierwszy.
Jeżeli chcesz mieć takie same nazwy metod dla różnych helperów najlepiej usuń po prostu helper :all - z tego co pamiętam helpery będą wtedy includeowane do odpowiadających im kontrolerów. Ale co do tego pewności nie mam, więc musisz sprawdzić.