Hi Taylor,
Rails gives me an error when I test for a blank param like this:
if params[:post][:id] @comment.commentable = Post.find(params[:post][:id]) elsif params[:event][:id] @comment.commentable = Event.find(params[:event][:id]) end
If I have params[:post][:id], things are fine. But if I have params[:event][:id] instead, I get this error:
You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.
Rails dies when it checks for the non-existent params[:post][:id]. I will always send either :event or :post, but never both. How can I use "if - elsif" to test for this without crashing? Thanks!
If the params[:post] hash is non-existent, then checking within it to see if there's an :id value is probably what's throwing that error.
To avoid this problem you'd want to do something like:
if params[:post] && params[:post][:id] @comment.commentable = Post.find(params[:post][:id]) elsif params[:event] && params[:event][:id] @comment.commentable = Event.find(params[:event][:id]) end
Or you could do something like this:
if id = params[:post][:id] rescue nil @comment.commentable = Post.find(id) elsif id = params[:event][:id] rescue nil @comment.commentable = Event.find(id) end
- --
Thanks,
Dan