chciałbym uzyskać taki efekt, żeby zdefiniować w helperze taką funkcję, która doda do sekcji (znajdującej się w layoucie) odpowiednie tagi do dołączania CSS i JS.
Idea jest taka, że mam helpery z funkcjami które wykorzystuję do generowania interfejsu mojej aplikacji. Część z nich do działania kontrolek potrzebuje zewnętrzne, dodatkowe CSS i JS. Chodzi o to, że jeśli wywołuję potem np. w widoku
to aby w ciele funkcji kontrolka_drzewka był taki kod, który zmodyfikuje w sposób opisany powyżej - tak, żebym nie musiał już o tym pamiętać w widoku, aby dołączać za każdym razem te style i JS, a żeby też ich nie dołączać globalnie do layoutu - bo po co mają się ładować, gdy nie są potrzebne?
Najprościej to chyba umieścić w head jakąś zmienną instancyjną, w którą będziesz pakował te .css i .js.
Jak dokładnie to zrobisz - to już Twoja decyzja. Osobiście bym to chyba (jest 4 rano, nie bijcie) załatwił tablicą hashy, która w headzie byłaby przekazana do własnego helpera. Ów helper by sobie iterował po parametrze i wywoływał już odpowiednie railsowe tagi (javascript_include_tag itd.)
No ok, ale to nie jest tak, że ten mój partial, który potem docelowo będzie gdzieś tam w yield i przy Twoim założeniu dopisze coś do tej tablicy hashy, jest wywoływany już PO tym jak ruby przerobi layout (a przynajmniej ?)
Najlepiej zrobić to za pomocą nazwanego yield’a i content_for, tzn:
w layoucie masz:
[code=html]
<%= yield :head %>
...
[/code]
a w templejcie/partialu/helperze masz:
<% content_for :head do -%>
<%= javascript_include_tag "my_js", "another_lib" %>
<% end -%>
Nie trzeba tworzyć żadnych zmiennych instancji, ktoś już o tym pomyślał dlatego powstało content_for. Oczywiście content_for możesz używać do czego tylko Ci się podoba, nie tylko inkludowania js/css.