2010-10-11 19 views
26

Bir girişi düzenledikten sonra farklı bir sayfaya yönlendirmeye çalışıyordum, veritabanını güncellediğiniz için güncelleme kodunu kullandığını farz ettim. Denetleyicide yanlış eylemi kullandığımı farketmem biraz zaman aldı. Birisi nasıl düzenleme ve güncelleme çalışmalarını açıklayabilir. Neden iki farklı eylem var? aralarındaki farklar nelerdir? Eğer rake routes çalıştırırsanızRestful Rails Edit vs Güncelle

+0

İki farklı kategoriye ayrılabilen görevlerim var. Görevler için aynı modele bağlanan her kategori için bir denetleyici oluşturdum. Düzenleme formunu gönderdiğimde, ana görev denetleyicileri eylemini yeniden yönlendiriyor. Com_tasks denetleyicisini hep birlikte atlıyor gibi görünüyor (com_tasks = kategori denetleyicilerinden biri). Oluşturulan html çıktısına baktım ve form yanlış denetleyiciye gönderildi, ancak bunu değiştirmenin bir yolunu göremiyorum. – Rumpleteaser

cevap

47

düzenlemek eylem

güncelleme eylem (db güncelleştirmeler vs) modeliyle etkileşim sorumludur görünümü render sorumludur

Eğer fiil arasındaki farkı göreceksiniz ve eylem. Tipik olarak, bir form gönderirken oluşturma/güncelleme eylemleri kullanılır. Bu, yeni ve düzenleme eylemlerinden farklıdır ve bunlar görünümü oluşturmak için kullanılır (gönderilecek formu görüntüler).

+0

hangi sırada çağrılırlar? hangi süreçten geçiyor? düzenle -> güncelle -> düzenle Düzenlemede bir yönlendirme koyduysam güncellemeye ulaşmaz mı? – Rumpleteaser

+0

Doğru. Birini yeniden yönlendirmek istiyorsanız * sonra * bir girişi güncellediniz, yönlendirmeyi güncelleme eylemine koyarsınız. – theIV

+1

Bu zincirde sadece 2 olay var: düzenleme, formu biçimlendirir, ardından kullanıcı gönderdiğinde güncellenir. Farklı bir sayfaya gitmek için redirect_to (varsayılan olarak bir scaffold'daki gösterim görünümüdür), daha sonra bir üçüncü tanesine sahip olursunuz. Bu durumda –

13

Bir başka bakış açısı - benzerlik ve farklılıkları vurgulamak için gereksiz biraz:

Yeni bir form oluşturmak için öncü eylemdir, yani ibraz ederek, İşlem oluştur çalışır.

Düzenleme bir form oluşturmak için öncü eylemdir (görünüm genellikle zaten oluşturulan benzer öğelerin bir listesini gösteren indeks görünümüne geri yönlendirilir), yani ibraz ederek, Güncelleme eylemi çalıştırır . (görünüm genellikle, oluşturduğunuz benzer öğelerin bir listesini gösteren dizin görünümüne geri yönlendirilir.)