However the repeated partial rendering in a loop implies several disadvantages.
The view contains unnecessary logic (the loop).
Besides the approach is poorly performing. Essentially the partial is reloaded for each loop pass. For 20 articles that means 10 times:

The alternative is partial caching by collection rendering. The improved view articles/index.html.haml:

%ul.articles=renderpartial: 'article',collection: @articles

The iterator was eliminated and the particular article is assigned to the partial implicitly.
The partial is still called explicitly. If the partial name meets the convention, there is a more concise alternative:

%ul.articles=render@articles

In doing so Rails checks the method ‘to_partial_path’ for each object, if it is implemented, which is true for ActiveRecord objects. That is how the correct partial is rendered.
In both cases the view is way more readable and the log file looks like: