2012-08-08 22 views

Respuesta

12

si el objeto pasado a la forma es persisted?, la forma constructor sabe que son actualizando un objeto y, por lo tanto, representará una acción PUT. Si no se conserva, entonces sabe que está creando un nuevo objeto y usará POST.

<%= form_for @user do |f| %> 
    <%= f.button %> 
<% end %> 

Si @user es un nuevo registro, se utiliza POST y la etiqueta del botón se convierte en Create User, de lo contrario se utiliza PUT y la etiqueta se convierte en Update User. No hay mucho más para eso.

+0

Gracias. Terminé usando created_at, ya que estaba accediendo a mi modelo con js del lado del cliente, con el @model expuesto como un hash por gon. Así que me dejaron solo propiedades para trabajar. – Undistraction

3

Formas de edición de recursos existentes use PUT, formularios creando un nuevo recurso use POST. Según los estándares REST descritos en here.

de los rieles de código form_for ayudante:

action, method = object.respond_to?(:persisted?) && object.persisted? ? [:edit, :put] : [:new, :post] 

y persisted? de ActiveRecord se declara como:

!(new_record? || destroyed?) 
+0

Mi pregunta fue cómo Rails decide qué método establecer en el formulario. ¿Qué está usando para decidir? – Undistraction

+0

Actualizado, ¿es eso lo que quería? – PinnyM

+0

Gracias. Aunque miedo @hgmnz te ganó al golpe. – Undistraction

Cuestiones relacionadas