Duda con metodos destroy y delete (Amilcar Glez)


#1

Bien tengo en mi photos_controller:

def destroy
@photo = Photo.find(params[:id])
@photo.destroy

respond_to do |format|
  format.html { redirect_to(photos_url) }
  format.xml  { head :ok }
end

end

En mi vista para ‘index’ tenía:


<% for photo in @photos %>

<%= h photo.filename %>
<%= link_to 'delete me', {:action => 'destroy', :id => photo}, :confirm => 'Are you sure?' %> .......

Pero al clicar en delete me no se borraba y me reenviaba a la parte de
‘show’, entonces hice un cambio y puse en la vista:


<% for photo in @photos %>

<%= h photo.filename %>
<%= link_to 'delete me', photo, :method => :delete, :confirm => 'Are you sure?' %>

y si funciona perfectamente y no se porque. ¿Alquien me lo
podría explicar?


#2

<% for photo in @photos %>

<%= h photo.filename %>
<%= link_to 'delete me', photo, :method => :delete, :confirm => 'Are you sure?' %>

y si funciona perfectamente y no se porque. ¿Alquien me lo podría explicar?

Porque por defecto link_to crea un link comun, que termina en un GET.
Al especificar un :method diferente a GET, se agrega Javascript para
hacer un request por AJAX para tener el efecto deseado.

Ricardo M.
http://www.gazer.com.ar/


#3

Creo que es por las rutas REST, que cómo no estas utilizando un
heleper REST sino que los estás haciendo “al modo clásico”, utiliza el
vervo GET por defecto, lo cual con esa URL le lleva a la
acción"show".
Creo que es esto, pero seguro que los expertos lo sabran mejor que yo,
que estoy aún empollando el tema REST. :wink:

Te recomiendo este PDF que lo explica muy bien y además en español. Lo
cual simepre es de agradecer:
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=desarrollo+rest+con+rails+juan+lupion

El día 17 de abril de 2009 4:50, Amilcar González removed_email_address@domain.invalid
escribió:> end

:confirm => ‘Are you sure?’ %>
<%= h photo.filename %>
Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


Fernando V.
Web Designer
http://www.fernandoval.com


#4

ojo, que la petición no la hace por ajax si no que monta un formulario
mediante javascript para asignar el método ya sea como un atributo de
éste o
como un campo oculto en el caso del put, pero vamos, que al final es una
petición normal y corriente

On 17/4/09 05:05, Ricardo M. wrote:

<% for photo in @photos %>

<%= h photo.filename %>
<%= link_to 'delete me', photo, :method => :delete, :confirm => 'Are you sure?' %>

y si funciona perfectamente y no se porque. ¿Alquien me lo podría
explicar?

Porque por defecto link_to crea un link comun, que termina en un GET.
Al especificar un :method diferente a GET, se agrega Javascript para
hacer un request por AJAX para tener el efecto deseado.


#5

2009/4/17 Borja Martín removed_email_address@domain.invalid:

ojo, que la petición no la hace por ajax si no que monta un formulario mediante javascript para asignar el método ya sea como un atributo de éste o como un campo oculto en el caso del put, pero vamos, que al final es una petición normal y corriente

Si, es verdad, quise decir “javascript” (para hacer notar el hecho de
que si el usuario no lo tiene activo no funciona).

Ricardo M.
http://www.gazer.com.ar/