On Mon, Dec 19, 2011 at 11:56 PM, Steve Klabnik <st...@steveklabnik.com> wrote:
> throw/catch for flow control is bad.

Indeed it is. It's the one thing in Sinatra I always disliked.

If I had to choose, I would go down the path of render/redirect
returning a response, so you would do something like `return render
:new` or `return redirect_to @object`.

This has the added bonus that it's compatible with 99.9% of the uses
of render and redirect (being the last line of an action/conditional)
thanks to the implicit returns.

def create
  @obj = Obj.new(…)

  if @obj.save
    redirect_to @obj, notice: …
  else
    render :new
  end
end

That still works as expected.

But if you did:

def create
  render :foo
  render :bar
end

You get the response generated by "render :bar" and the other one is
ignored. Because it's just an object returned, instead of some black
magic depending on class state.

That said, this would require quite the refactoring in ActionPack.

But it would be much cleaner, IMHO.

Cheers,
-foca

> --
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Core" group.
> To post to this group, send email to rubyonrails-core@googlegroups.com.
> To unsubscribe from this group, send email to 
> rubyonrails-core+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-core?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-core+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to