iterating through an array of calls to which a login belongs to

There's an array of calls in the controller to which this login belongs
to. The desired output is the comment attribute for these Call instances.

I'm getting an error of:

undefined local variable or method `calls'

which is perhaps due to a syntax or other erb error in the show:

thufir@arrakis ~/goodfellow-tool $ cat app/controllers/
logins_controller.rb -n | head -n 18 | tail -n 4
    15 def show
    16 @login = Login.find(params[:id])
    17 calls = @login.calls
    18 end
thufir@arrakis ~/goodfellow-tool $ cat app/views/logins/show.rhtml -n |
head -n 25 | tail -n 3
    23 <% calls.each do |call| %>
    24 <%=h @call.comment %>
    25 <% end %>
thufir@arrakis ~/goodfellow-tool $ cat app/models/call.rb
class Call < ActiveRecord::Base
        belongs_to :login
end
thufir@arrakis ~/goodfellow-tool $ cat app/models/login.rb
class Login < ActiveRecord::Base
        belongs_to :employee
        has_many :calls
end
thufir@arrakis ~/goodfellow-tool $

thanks,

Thufir

Thufir wrote:

thufir@arrakis ~/goodfellow-tool $ cat app/controllers/
logins_controller.rb -n | head -n 18 | tail -n 4
    15 def show
    16 @login = Login.find(params[:id])
    17 calls = @login.calls
    18 end
thufir@arrakis ~/goodfellow-tool $ cat app/views/logins/show.rhtml -n |
head -n 25 | tail -n 3
    23 <% calls.each do |call| %>
    24 <%=h @call.comment %>
    25 <% end %>
thufir@arrakis ~/goodfellow-tool $ cat app/models/call.rb
class Call < ActiveRecord::Base
        belongs_to :login
end
thufir@arrakis ~/goodfellow-tool $ cat app/models/login.rb
class Login < ActiveRecord::Base
        belongs_to :employee
        has_many :calls
end
thufir@arrakis ~/goodfellow-tool $

Hi Thufir,

You are missing the @ symbol on line 17 in your logins_controller. it
should be
  @calls = @login.calls

Thufir wrote:

thufir@arrakis ~/goodfellow-tool $ cat app/controllers/
logins_controller.rb -n | head -n 18 | tail -n 4
   15 def show
   16 @login = Login.find(params[:id])
   17 calls = @login.calls
   18 end
thufir@arrakis ~/goodfellow-tool $ cat app/views/logins/show.rhtml -
n |
head -n 25 | tail -n 3
   23 <% calls.each do |call| %>
   24 <%=h @call.comment %>
   25 <% end %>
thufir@arrakis ~/goodfellow-tool $ cat app/models/call.rb
class Call < ActiveRecord::Base
       belongs_to :login
end
thufir@arrakis ~/goodfellow-tool $ cat app/models/login.rb
class Login < ActiveRecord::Base
       belongs_to :employee
       has_many :calls
end
thufir@arrakis ~/goodfellow-tool $

Hi Thufir,

You are missing the @ symbol on line 17 in your logins_controller. it
should be
@calls = @login.calls

And show should be
<% @calls.each do |call| %>
   <%=h call.comment %>
<% end %>

As it is, you're iterating over something that doesn't exist, and on
top of that the block was yielding you one value but you were using
another.

Fred

Thank you :slight_smile:

Is it ok (the convention) to put that <br> in there? I need to add a
title, and start putting things into nice columns and stuff, but one step
at a time :slight_smile:

thufir@arrakis ~/goodfellow-tool $ cat app/views/logins/show.rhtml -n |
head -n 26 | tail -n 4
    23 <% @calls.each do |call| %>
    24 <%=h call.comment %>
    25 <br>
    26 <% end %>
thufir@arrakis ~/goodfellow-tool $

thanks,

Thufir

Thanks, I corrected it to:

thufir@arrakis ~/goodfellow-tool $ cat app/controllers/
logins_controller.rb -n | head -n 18 | tail -n 4
    15 def show
    16 @login = Login.find(params[:id])
    17 @calls = @login.calls
    18 end
thufir@arrakis ~/goodfellow-tool $

What I don't understand is that there's a Call class (model), but there's
no Calls model. How in the world can there be an instance of a class,
Calls, which doesn't exist?

Clearly, class Calls does exist -- this must be the magic of rails, what
rails does for me. I dunno, too easy.

thanks,

Thufir

You are missing the @ symbol on line 17 in your logins_controller. it
should be
@calls = @login.calls

Thanks, I corrected it to:

thufir@arrakis ~/goodfellow-tool $ cat app/controllers/
logins_controller.rb -n | head -n 18 | tail -n 4
   15 def show
   16 @login = Login.find(params[:id])
   17 @calls = @login.calls
   18 end
thufir@arrakis ~/goodfellow-tool $

What I don't understand is that there's a Call class (model), but
there's
no Calls model. How in the world can there be an instance of a class,
Calls, which doesn't exist?

Clearly, class Calls does exist -- this must be the magic of rails,
what
rails does for me. I dunno, too easy.

There is no Calls class. what makes you think here is one ?

Fred

[...]

There is no Calls class. what makes you think here is one ?

When the show uses @shows, doesn't the "@" indicate instance
variable? I would think that @shows is an array, and yes it's an
object so, in that sense, I guess, is an instance variable of Array.

Why is the "@" required in this case?

-Thufir

[...]

There is no Calls class. what makes you think here is one ?

When the show uses @shows, doesn't the "@" indicate instance
variable? I would think that @shows is an array, and yes it's an
object so, in that sense, I guess, is an instance variable of Array.

Well yes @calls is an instance variable (of an instance of your
controller), but that's got nothing to do with their being or not a
Calls class. And it's definitely not an instance variable of Array
(unless you meant that it's an instance variable that happens to be an
array)

Why is the "@" required in this case?

Well if there was no @ then it wouldn't be an instance variable and so
your view wouldn't be able to play with it

Fred