Pido disculpas si esto no sigue las pautas de una buena pregunta, pero espero que esté bien en la clase con How to Manage CSS Explosion y reciba una respuesta similar.¿Cómo administro if-then explosión en archivos de vista?
estoy familiarizado con algunas de las estrategias básicas de mitigación vista prolijidad tales como los siguientes:
- Use ayudantes en su caso
- No te repitas
- Use parciales y diseños
No dude en sugerir algo si me falta una gran idea en la lista anterior.
Sin embargo, sigo teniendo varias dimensiones/grados de libertad en mi opinión, lo que provoca un montón de declaraciones if-then o al menos ternarios. Por ejemplo, en algo que estoy actualmente jugar con, estoy trabajando en una barra de cabecera para un programa donde la vista se llama cuando tres "grandes" variables:
- si el usuario es admin
- si el usuario se registra en
- si la página que se está viendo pertenece al usuario u otra persona
se termina pareciéndose a este lío:
<% content_for :subheader do %>
<div class="row">
<% if @user %>
<% if @user == current_user %>
<%= link_to 'My programs', user_programs_path(current_user), :class => 'active' %>
<% else %>
<%= link_to "#{@user.username}'s programs", user_programs_path(@user), :class => 'active' %>
<% end %>
<%= link_to 'Browse all programs', programs_path %>
<% else %>
<% if current_user %>
<%= link_to 'My programs', user_programs_path(current_user) %>
<% end %>
<%= link_to 'Browse all programs', programs_path, :class => 'active' %>
<% end %>
<%= link_to 'New Program', new_program_path, :class => 'admin' if current_user.admin? %>
</div>
<% if @regions %>
<div class="row second">
<%= link_to 'Regional program search', request.fullpath, :class => 'active' %>
</div>
<% end %>
<% end %>
Ugly. Legible y de fácil acceso, pero feo. ¿Algunas sugerencias?
Entre la experiencia y las nuevas tecnologías como LESS, me he vuelto bastante bueno para adelgazar mis archivos CSS, pero todavía estoy teniendo problemas de explosión con mis vistas MVC.
Esto va a ser una de esas preguntas que nadie se sienta juego suficiente para responder, porque es una cuestión tan obstinada .. Am deseando escuchar lo que la gente viene sin embargo! – 2potatocakes
Honestamente, deseo que haya una buena manera de "desarmar" esta pregunta. Si usted (y cualquier otra persona) tiene alguna buena idea, puede editar la pregunta. –