Confusion over ERB delimiters in Rails form partial

"Agile Web Development with Rails 5", p.76 lists a form partial which begins:

<%= form_for(product) do |f| %>    <% if product.errors.any? %>      <div id="error_explanation">        <h2><%= pluralize(product.errors.count, "error") %> prohibited this product from being saved:</h2>

       <ul>        <% product.errors.full_messages.each do |message| %>          <li><%= message %></li>

It is correct but I'm confused about the first line as I understood that control structures begin with <% as in the 2nd line and that <%= is reserved for inserting values and calling formatting functions.

gvim

That is almost correct. Lines with <% are evaluated but nothing is inserted into the page. Lines with <%= are evaluated and the returned value (string) is inserted into the page. Since form_for has to insert the form tag into the page then it has to be <%=

Colin

Sorry, should have RTFM first :slight_smile:

gvim