Se hai bisogno di funzioni extra nella tua vista, di solito dichiari quelle all'interno di un helper.
Per ogni controller, se è presente un helper viene caricato automaticamente. Per esempio, se avete un PeopleController, nella cartella app/helpers
, ci dovrebbe essere un people_helper.rb
, e dovrebbe assomigliare a questo
module PeopleHelper
def name
#do something
username
end
end
altro, alternativa molto pulito, è quello di utilizzare il Presenterpattern, ma penso che sia è meno comune (purtroppo).
In caso contrario, se si ha bisogno di più righe di codice Ruby all'interno di una vista Erb, che cerco di evitare, preferisco il seguente stile:
<%
counter_1 = 0
counter_2 = 1
do_some_more_prep_here
%>
<% @records.each do |rec|%>
<%# do something with the prepped date in each row %>
<% end %>
Anche per me indentazione del codice è più importante di html indentazione , quindi preferirò qualcosa come
<table>
<% @rows.each do |row| %>
<tr>
<td><%= row.item1 %></td>
<% if row.some_test %>
<td><%= row.item2 %></td>
<% end %>
</tr>
<% end %>
</table>
Ma sono sempre molto interessato a sentire opinioni diverse in questa materia.
Perché stai cercando di creare una funzione in una vista? Appartiene molto probabilmente nel modello, o se non nel controller, ma sicuramente non nella vista – jigfox
Scusa, ho appena digitato un po 'di codice lì dentro come esempio. – ben