Rails jbuilder error: ActionView::Template::Error (undefined method

175 Views Asked by At

I have a Rails 6 app and we're using jbuilder to define the shape of JSON responses.

Recently, I started getting the following error:

ActionView::Template::Error (undefined method `empty?' for #<Account:0x0000000116743030>):

The stack trace points to this block inside a jbuilder file:

json.account do
  json.call(@account, *Account::APP_FIELDS)
  json.logo_url @account.logo
end

If I comment out both of the lines inside the block, the error goes away. If I remove either of the lines and leave the other, the error returns. The stack trace just points me to the first line of the block.

What's going on? How do I fix this?

1

There are 1 best solutions below

0
emersonthis On

Figured it out!

Higher in the jbuilder file, a partial is included that adds the same account key. This was causing some kind of name collision.

I stumbled on this by temporarily testing with my key renamed accountt and suddenly it worked. That's when I realized it was conflicting name that was causing the issue. I didn't see it because it was in a different file and the error message was confusing. If your jbuilder file is complicated and you think you're running into this same issue, this is an easy way to test.