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

31 views
Skip to first unread message

candor

unread,
Oct 8, 2014, 11:37:00 PM10/8/14
to rubyonra...@googlegroups.com
form_for defaults to 'new' if no :url is specified. Why doesn't it default to 'create' instead, since that is the most common scenario?

Vivek Sampara

unread,
Oct 9, 2014, 1:08:48 AM10/9/14
to rubyonra...@googlegroups.com
It depends on the type of object you pass as a parameter to form_for. 

eg: 

@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 already

form_for doesn't generate a url pointing to :new action unless specified. 


On Thu, Oct 9, 2014 at 9:07 AM, candor <rca...@gmail.com> wrote:
form_for defaults to 'new' if no :url is specified. Why doesn't it default to 'create' instead, since that is the most common scenario?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/0bd7fcc4-74a8-46d0-b8da-2dd9272424a5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Anand Ramanathan

unread,
Oct 9, 2014, 9:47:45 AM10/9/14
to rubyonrails-talk
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)?


Reply all
Reply to author
Forward
0 new messages