Attenzione: Noob qui.Rails: refactoring, views, helpers: come vanno tutti insieme?
So che questo è un argomento banale ma sto avendo molte difficoltà a capire in che modo esattamente posso semplificare le mie opinioni spostandone parti in aiutanti. Ad esempio, ho sempre letto che i condizionali nei tuoi punti di vista sono i primi candidati per l'estrazione in aiutanti, ma non sono riuscito a trovare esempi di questo, e i miei tentativi di raggiungere questo risultato sono falliti.
Per esempio, supponiamo di avere:
#index.html.erb
<% for beast in @beasts do -%>
<% if beast.dead? -%>
<%= beast.body %>
<%= link_to "bury", bury_beast_path(:id => beast.id) %>
<% else -%>
<%= beast.body %>
<%= link_to "kill!", kill_beast_path(:id => beast.id) %>
<% end -%>
<% end -%>
E mi scoccia un po 'per avere questo a mio avviso, ma esattamente come ho potuto passare ad un aiutante, invece? E ulteriormente semplificarlo, se possibile. (Ho letto da qualche parte che i condizionali sono male, ma è solo al di là di me come si potrebbe programmare nulla senza di loro.)
Un altro esempio: ho bisogno di id
miei body
tag con il formato controller_action
. Il migliore che ho avuto finora è questo:
#index.html.erb
<body id="<%= controller_action %>">
... e ...
#application_helper.rb
def controller_action
@id = @controller.controller_name + "_" + @controller.action_name
end
Non sono un esperto, ma che è ancora brutto anche a me.
Per rendere le cose più complicate, Ryan Singer said something I liked: per trattare ERB come un tag immagine, utilizzando gli helper per "rivelare l'intenzione". Poi, nel prossimo respiro, dicendo che non dovresti avere HTML in helpers per quella è la via per l'inferno. WTF? In che modo entrambe le cose sono compatibili? Se si arriva al punto in cui si possono semplicemente dichiarare i comportamenti nella vista, sicuramente ci dovrebbe essere un sacco di HTML da rendere dietro le quinte? Non riesco a coglierlo.
Quindi, questo è fondamentalmente. Sarei grato se qualcuno potesse condividere alcune considerazioni su questo argomento, o indicarmi una buona lettura approfondita sull'argomento - che ho trovato per avere una copertura davvero debole sul web. Ho già cercato su Google fino allo sfinimento, ma chi lo sa.
Nota secondaria. L'uso di 'for' va bene, ma l'uso di un iteratore è più una convenzione Ruby, ad es.' <% @ Beasts.each do | beast | %> '. –
@Sarah: Grazie. È che mi piace molto l'aspetto del linguaggio naturale dell'uso di 'for'. –