I agree it is an unhelpful error message. The first few times it happened to me, I scratched my head for a while trying to divine its meaning.
Jon On Jan 21, 12:58 pm, Jacques Crocker <[email protected]> wrote: > Ugghh.. posted this too soon. Discovered my problem. I was accidently > returning nil from a controller action will result in the message: > *NoMethodError: undefined method `each' for nil:NilClass* > > since it sets the body to the output of the action, and it puts the > body directly into the rack_response > > Seems like a fairly unhelpful error message when returning nil from a > controller. This will easily happen if someone adds a log statement or > something to the end of the action expecting it to work like rails and > render anyways. > > Might be worth adding a message at the end of the merb_controller to > check for nil, and throw a proper exception with a message that the > action returned no output for the controller > > Jacques Crocker wrote: > > Looks like there's a bit of a problem rendering template's in Merb > > 1.0.8.x. In a controller's action (search/index), if I say: > > > def index > > @posts = search_posts > > render :template => "posts/index" > > end > > > I get: > > > Read error: #<NoMethodError: undefined method `each' for nil:NilClass> > > /Users/jc/Merb/stalkr/gems/gems/merb-core-1.0.8.1/lib/merb-core/rack/ > > stream_wrapper.rb:18:in `each' > > /Users/jc/Merb/stalkr/gems/gems/merb-core-1.0.8.1/lib/merb-core/rack/ > > handler/mongrel.rb:92:in `process' > > > ---- > > > I spent quite a bit of time tracing it, and here are some interesting > > notes. > > > If I just turn a string "TEST" from my action, it renders just fine > > > If set render to a variable, and then return that string, it actually > > works which seems crazy to me > > > def index > > @posts = search_posts > > tmp = render(:template => "posts/index") > > return tmp > > end > > > Has anyone seen this error before? I starting investigating rack/ > > stream_wrapper and am not sure exactly what it's doing so its a bit > > tough to debug. The reason its breaking though is @body is nil so the > > StreamWrapper got initialized wrong. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "merb" 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/merb?hl=en -~----------~----~----~----~------~----~------~--~---
