This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 3 years ago.
Whenever the following code runs i get extra output on the page which looks like the garbage on the bottom. I have tried to see if it is in my migrations or function calls, but they all seem to be pretty clean (not much too f.name). If needed I can provide a copy of my migrations and schema.
<%= #subject.Name %>
<%= #subject.formulas.each do |f| %>
<div class="entry">
<h3><%= f.name %></h3>
</div>
<% end %>
The extra output is:
[#<Formula id: 2, name: "Pythagorean Theorem", description: "n any right triangle, the area of the square whose ...", formula: "a^2+b^2=c^2", created_at: "2011-05-17 03:18:44", updated_at: "2011-05-17 03:18:44">]
Change
<%= #subject.formulas.each do |f| %>
to
<% #subject.formulas.each do |f| %>
Related
This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 4 years ago.
I am currently learning ruby-on-rails and I noticed in the tutorial I am following that closing the syntax <% end %>.
Out of curiosity, I wanted to know why mine is showing <% end -%> with the minus sign before %. The codes are working just fine with the minus sign?
<% end -%>
is used to avoid line break after expression
<% %> and <%- -%> are the same. however that <%= %> and <%= -%> are different: only the latter removes trailing whitespaces.
Example :
<div>
<%= "Hii" -%>
</div>
It will produce
<div>
Hii</div>
and without '-' :
<div>
Hii
</div>
This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 3 years ago.
I don't know why it is printing out an array. I used the same method for another checkbox and it doesn't print out an array.
This is the code for the view
<%= f.label "Category: " %>
<%= Category.all.each do |category| %>
<%= check_box_tag "course[category_ids][]", category.id %>
<%= category.cat_name %>
<% end %>
and this is what it prints:
Programming [#<Category id: 1, cat_name: "Programming", created_at: "2017-05-25 02:25:24", updated_at: "2017-05-25 02:25:24">]
Is there a way to remove the array?
You're printing Programming [#<Category id: 1, cat_name: "Programming"...] because you're using <%= ... %> instead <% ... %>, that's why you're printing the result of Category.all.each.
You can remove the = in your Category.all and that'll be as you want it.
Also I'd recommend you to create that as a variable in your controller and then to pass it to the view.
This question already has answers here:
What is the difference between <%, <%=, <%# and -%> in ERB in Rails?
(7 answers)
Closed 3 years ago.
I'm listing a set of data (for simplicity sake, just the identity column) of a particular database table table as follows:
<%= #fields.select{|field| field.model=="PreferredOffering"}.each do |field| %>
<%= field.id %>
<br/>
<% end %>
As you may have gathered from above, I'm using the combination of select and each to iterate ONLY through rows whose column model contains the string PreferredOffering.
My expectation was that I would see a nice ordered list of numbers and indeed I do. My confusion is that I ALSO see the entire #fields array coughed all over the page, below the list of numbers. (See below html excerpt)
106
<br/>
107
<br/>
108
<br/>
109
<br/>
110
<br/>
111
<br/>
112
<br/>
[#<PreferredOfferingField id: 5, field_heading: "Anti-dilution provisions- Typical Weighted Average", category: "Anti-Dilution", intra_cat_order: 1, model: "P
My guess is that I'm doing something funny with select as I'm not really familiar with its usage.
Any ideas on how to remedy this would be received gratefully; thanks in advance.
<% %> Executes the Ruby code inside
<%= %> Prints the results
You are displaying array and then it's values, so you would want to change <%= %> to <% %> .
<%= #fields.select{|field| field.model=="PreferredOffering"}.each do |field| %>
to
<% #fields.select{|field| field.model=="PreferredOffering"}.each do |field| %>
This question already has an answer here:
embedded ruby syntax "<%= .. %>" in rails [duplicate]
(1 answer)
Closed 8 years ago.
I've been following Agile Web Development with Rails, and their code suddenly switches from the use of <%= %> to <% %>.
Code Example 1:
<%= 1+2 %>
Code Example 2:
<% for file in #files %>
file name is: <%= file %>
<% end %>
My question is, for the second code sample why can I not use <%= %>?
Thanks!
In ERB (embedded ruby) syntax, <%= %> is shorthand for "perform the following ruby code AND THEN print the result". So in the first example, it will print the result of the operation 1 + 2, 3.
The second example shows a for loop which will iterate and print the contents between the for declaration and its corresponding <% end %>.
To answer your question, the expression for file in #files itself doesn't return anything worth printing so there's no need to use <%= %> and in fact doing so can cause a hard-to-track-down bug.
This question already has answers here:
Why am I getting objects printed twice?
(4 answers)
Closed 6 years ago.
I have this code in on of my views
<%= #quotes.each do |f| %>
<%=f[:underwriter]%>: £<%=f[:premium]%>
<br>
<% end %>
And in my controller I pass it the argument
#quotes = [{underwriter:"dtc",premium:500},{underwriter:"abc",premium:800}]
I expect it to print out the underwriter and premium, which it does, however it tags the whole array on at the end for some reason. This is shown below
dtc: £500
abc: £800
[{:underwriter=>"dtc", :premium=>500}, {:underwriter=>"abc", :premium=>800}]
Anyone can enlighten my to what is causing this behaviour?
Just do
<% #quotes.each do |f| %>
<%=f[:underwriter]%>: £<%=f[:premium]%>
<br>
<% end %>
Array#each - Calls the given block once for each element in self, passing that element as a parameter. when iteartion completed, return the self. <%= %> prints what is in between inside the tag into erb file, whereas <% %> executes the ruby code within the brackets.
Check this one Rails, ERB syntax also.