Why doesn't form_for default to 'create' action?

form_for defaults to ‘new’ if no :url is specified. Why doesn’t it
to ‘create’ instead, since that is the most common scenario?

It depends on the type of object you pass as a parameter to form_for.


@car = Car.new

@car1 = Car.first

form_for(@car) generates a url ( /cars ) method “post” #create action
form_for(@car1) generates a url ( /cars/:id/ ) method “put” # update
action. this happens when the object has been saved in the database

form_for doesn’t generate a url pointing to :new action unless

Thanks, Vivek.

If I use

form_for :car

It always submits to current url/action by default.

If you use the more RESTful approach (as described by Vivek) it posts to
appropriate actions.

My question is, in the :car case, wouldn’t it be DRY-er to directly pick
#create? (i.e, user doesn’t have to explicitly do @car = Car.new when
dealing with a new form)?

On Thu, Oct 9, 2014 at 10:38 AM, Vivek S. [email protected]