This should probably be easy but for some reason I can’t get past a
simple routine. I have a model for Companies and for Applications. A
company has many applications. So in this instance I have a company
id and I want to find all applications associated with that company.
I tried the following:
<%= Company.find(1).applications.each { |app| app.name } %> in my
view.
I’m not really sure what this is, but it does have one entry for each
of my applications for that company. So I know it is creating the
right number of entries just not sure what the output means.
I’m sure I am doing something monumentally stupid but I can’t seem to
find any examples of this that return this output. Any help that can
be provided is very much appreciated.
This should probably be easy but for some reason I can’t get past a
simple routine. I have a model for Companies and for Applications. A
company has many applications. So in this instance I have a company
id and I want to find all applications associated with that company.
I tried the following:
<%= Company.find(1).applications.each { |app| app.name } %> in my
view.
each returns the collection you iterated over. If you want the return
value to be the array containing the result of evaluating the block for
each object, then use map. Alternatively you can do
<% collection.each do |object| %>
<%= object.name %>
<% end %>
I am not at my computer, so I can’t help out with code.
Basically you need to dig one layer deeper. The above is an
array of Applications. Try to <%=raise Company.find(1).inspect %> to
display
the returned value/array. From there you can play around till it
satisfy your needs.
Your loop is correct. The issue how erb is interpreting what you are
asking it to do. The = is telling erb to spit out the contest of the
array Company.find(1).applications.each without running the block it
has. There are two ways to get it to display what you want. Remove the
= and change your block to read { |app| puts app.name } or do as
Fredrick suggested and write you code like so:
<% Company.find(1).applications.each do |app| %>
<%= app.name %>
<% end %>