Handling nil.errors in error_messages_for

How do you deal with multiple objects in error_messages_for when one or more may be nil?

For example:

<%= error_messages_for :object => [@account, @account.billing_detail, @account.mailing_address, @account.billing_address] %>

Here, @account.billing_detail may be nil, and throw a NoMethodError.

Thanks, Mark

Now, is @account a variable or a class? I could be way off in left field, but it looks like your calling objects that should be from a class. Variables should only be called by themselves typically.

@account is an instance of class Account.

Account has_one BillingDetail Account has_one MailingAddress Account has_one BillingAddress

My issue is how to deal with nil references on the has_one associations. To my knowledge, the above syntax is the only way to deal with error messages in a multi-model form. I could have also done this:

<%= error_messages_for :object => [@account, @billing_detail, @mailing_address, @billing_address] %>

having set these class variables in the controller, but that does not solve the nil issue.

Thanks, Mark

Mark Richman wrote:

How do you deal with multiple objects in error_messages_for when one or more may be nil?

For example:

<%= error_messages_for :object => [@account, @account.billing_detail, @account.mailing_address, @account.billing_address] %>

Here, @account.billing_detail may be nil, and throw a NoMethodError.

Thanks, Mark

i don't know why you are trying in this way

anyway try this <%= error_messages_for :object => [@account, @account.billing_detail, @account.mailing_address, @account.billing_address].compact %>

by mokkai

That worked! Thank you...had no idea you could do that...guess I should learn more Ruby :slight_smile:

Sniper Abandon wrote:

Mark Richman wrote:

had no idea you could do that...

why ?

Why did I have no idea??