I’ve got a relationship:
Person has many MiddleNames
and
MiddleName belongs to Person
In irb I can add a person, add a middle name then call
@person.middle_names.first.name
to get that middle name. However when I try the exact same code in a
view, I
get
undefined method `name’ for nil:NilClass
If I iterate through like so:
for mname in @person.middle_names
puts mname.name
Then it works perfectly, but for some reason using “.first” is failing
in
the view. I’ve used this method many many times and never come across
anything quite like this.
I believe I’m probably overlooking some incredibly simple answer and I’m
going to kick myself when someone points it out, but for now I’m
completely
stumpted.
Any input appreciated.
Thanks
Matt
for mname in @person.middle_names
puts mname.name
Then it works perfectly, but for some reason using “.first” is failing
in
the view. I’ve used this method many many times and never come across
anything quite like this.
“.first” is an array method. “mname.name” is an instance of an array…
Hope this helps…
I believe I’m probably overlooking some incredibly simple answer and I’m
going to kick myself when someone points it out, but for now I’m
completely stumped.
On Sat, Dec 26, 2009 at 11:40:00PM +0100, Pale H. wrote:
Hope this helps…
Thanks, but I’ve just noticed something:
The error I am getting only appears from my testing with
cucumber/rspec/webrat. If I
access the page manually through passenger, it all works perfectly.
I might contact the cuke list about this as the code is obviously
correct, it works
fine in irb and in a real browser, just not in the test environment. So
much for me
sticking to my BDD plans 
Thanks
Matt
On Sat, Dec 26, 2009 at 09:43:26PM -0500, Rick DeNatale wrote:
@person.middle_names.first.name
And what happens if you don’t add a middle name.
[].first #=> nil
That is true, but in my scenario I have added a middle name and related
it to that
person. I will of course go and triple check that but I have executed
the copy and
pasted commands from the cuke steps and it worked in irb.
Its quite possible I have slipped up but I will go and check. Thanks
?puts mname.name
Because if @person.middle_names is empty the loop body is not executed.
But it does execute the loop, and prints out the first of the names as
expected. This
is the weird thing.
Then it works perfectly, but for some reason using “.first” is failing in
the view. I’ve used this method many many times and never come across
anything quite like this.
–
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
On Sat, Dec 26, 2009 at 3:20 PM, Matt H.
[email protected] wrote:
I’ve got a relationship:
Person has many MiddleNames
and
MiddleName belongs to Person
In irb I can add a person, add a middle name then call
@person.middle_names.first.name
And what happens if you don’t add a middle name.
[].first #=> nil
to get that middle name. However when I try the exact same code in a view, I
get
undefined method `name’ for nil:NilClass
If I iterate through like so:
for mname in @person.middle_names
puts mname.name
Because if @person.middle_names is empty the loop body is not executed.
Thanks
Matt
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: Rick DeNatale - Developer - IBM | LinkedIn
–
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
maybe ‘puts @person.middle_names.inspect’ will give some information of
the structure .
On 2009年12月27日 05:54, Matt H. wrote:
person. I will of course go and triple check that but I have executed the copy and
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
–
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.