He estado trabajando con Rails por un tiempo y una cosa que constantemente hago es verificar si algún atributo u objeto es nulo en mi código de vista antes de mostrarlo . Estoy empezando a preguntarme si esta es siempre la mejor idea.Comprobación de nil en vista en Ruby on Rails
Mi razonamiento hasta ahora ha sido que, dado que mi (s) aplicación (es) dependen de la entrada del usuario, pueden ocurrir cosas inesperadas. Si he aprendido una cosa de la programación en general, es que los usuarios que ingresan cosas en las que el programador no pensó es una de las mayores fuentes de errores en tiempo de ejecución. Al buscar valores nulos, espero eludir eso y permitir que mis puntos de vista manejen el problema con elegancia.
Aunque normalmente, por diversos motivos, tengo comprobaciones de valores nulos o inválidos similares en mi modelo o código de controlador. No lo llamaría duplicación de código en el sentido más estricto, pero simplemente no parece muy SECO. Si ya he comprobado que no hay objetos en mi controlador, ¿está bien si mi vista simplemente supone que el objeto realmente no es nulo? Para los atributos que pueden ser nulos que se muestran, tiene sentido para mí comprobarlo todo el tiempo, pero para los objetos en sí no estoy seguro de cuál es la mejor práctica.
Aquí está un ejemplo simplificado, pero es típico de lo que estoy hablando:
código del controlador
def show
@item = Item.find_by_id(params[:id])
@folders = Folder.find(:all, :order => 'display_order')
if @item == nil or @item.folder == nil
redirect_to(root_url) and return
end
end
código de la vista
<% if @item != nil %>
display the item's attributes here
<% if @item.folder != nil %>
<%= link_to @item.folder.name, folder_path(@item.folder) %>
<% end %>
<% else %>
Oops! Looks like something went horribly wrong!
<% end %>
¿Es esta una buena idea o es sólo ¿tonto?