2011-01-16 27 views
6

button_to rayları yardımcısı kullanmaya çalışıyorum. Aşağıdaki kodu yazmış:Button on Ruby on Rails bozuk rota

<%= button_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

ve aşağıdaki hata iletisini

No route matches "/items/1/edit"

var Ama sayfayı yenilediğinizde uygun eylem gider. Aldığım sayfanın URL'si, doğru URL olan localhost:3000/items/1/edit. button_to komutunu link_to numaralı hataya geçmezseniz, hata içermeyen sayfa yüklenir. Bu kodu Anlamı:

<%= link_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

yükleri iyi. Belki de farkında olmadığım button_to'un bir özelliği var, ama ben kayboldum.

cevap

5

Sanırım button_to'yu yanlış kullanıyor olabilirsiniz. Düzenleme eylemine bağlanıyorsanız, link_to kullanmanız gerektiğini her zaman düşündüm. Düğmeler, form güncellemesi veya kayıt silme gibi verileri yayınlamak/göndermek için gereken eylemler için görünmektedir.

Güncelleme:

Varsayılan olarak

, button_to yerine GET POST kullanır. Dolayısıyla, URL'yi (örneğin GET) ziyaret ettiğinizde çalışır.

+0

Nasıl için bu özellik geçerli: ex

? – Nayish

+0

Bir düğmeye benzemesini istiyorsanız, link_to'yu kullanır ve bağlantınızın bir düğme gibi görünmesini sağlayan bir CSS sınıfı kullanırdım. Buradaki harika makale: http://www.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/ – dontangg

+2

@nayish yöntemini almak için şu yöntemi kullanabilirsiniz: 'button_to 'edit', edit_item_path (@item),: method =>: get ' –

2

button_to varsayılan değeri POST değerine ve link_to varsayılan değeri GET olarak ayarlanır.

Eğer gerçekten button_to'ya ihtiyacınız varsa, düzenleme ve diğer bağlantılar için varsayılan yöntemi GET olarak değiştirebilirsiniz.

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>