Before Rails 5, partials name should start with underscore and should be followed by any combination of letters, numbers and underscores.
This rule was required because before
rendering a partial without giving
:collection used to generate
a local variable with the partial name by default and
a variable name in ruby can't have dash and other things like that.
In the following case we have a file named
Now let's try to use this partial.
1 2<!DOCTYPE html> 3<html> 4<body> 5 <%= render :partial => 'order-details' %> 6</body> 7</html>
We will get following error, if we try to render above view in Rails 4.x.
1ActionView::Template::Error (The partial name (order-details) is not a valid Ruby identifier; 2make sure your partial name starts with underscore, 3and is followed by any combination of letters, numbers and underscores.): 42: <html> 53: <body> 64: Following code is rendered through partial named \_order-details.erb 75: <%= render :partial => 'order-details' %> 86: </body> 97: </html>
In the above the code failed because the partial name has a dash which is not a valid ruby variable name.
In Rails 5, we can give our partials any name which starts with underscore.