2008-09-12 27 views
2

Bir Ruby on Rails uygulamasında ActiveScaffold kullanıyorum ve tablodaki varsayılan "eylemler" metnini (örn. "Düzenle", "sil", "göster") CSS kullanarak simgelerle değiştirdim. Ayrıca action_link.add ("move" ve "copy") ile birkaç özel eylem ekledim.Görüntülenen ActiveScaffold "eylemleri" sırasını nasıl değiştirirsiniz?

Netlik için, Simgelerin,'dan farklı bir sırayla görüntülenmesini istiyorum. Özellikle, görüntülenen ilk simge olmak için "düzenle" yi istiyorum.

Denetleyicideki tanım sırasını değiştirerek action_links sırasını değiştirebiliyorum. Ayrıca, varsayılan yapılandırmaların sırasını her şeyi ilk config.actions.excluding yaparak ve daha sonra bunları belirli bir sırada config.actions.add ile ekleyerek değiştirebiliyorum.

Ancak benim özel eylemler hep listede önce varsayılan eylemleri görünüyor gibi gözüküyor.

İdeal olarak "edit" "copy" "move" "sil" (yani, yerleşik, özel, özel, yerleşik) 'i görüntülemek isterim. Bunu nasıl yapabileceğimi öneren var mı?

Yaptığım bir fikir, "düzenleme" özelliğini özel bir eylem olarak (varsayılan işlevle) yeniden tanımlamaktı, ancak bununla ilgili nasıl gideceğimi de bilmiyorum.

cevap

1

Sıkıştırma: Bilmiyorum ActiveScaffold. Bu cevap bana kaynak kodunu okuyarak dayanıyor.

action_links değişkeni, ActionLinks adı verilen özel bir veri yapısıdır. ActiveScaffold::DataStructures'da tanımlanmıştır.

Dahili olarak, Set numaralı @set değişkenine sahiptir, ancak Array. ActionLinks, @set değişkeninin kapı bekçileri olarak hizmet veren add, delete ve each yöntemlerine sahiptir. farklı @set değerleri sıralamak için bir yöntem eklemek için ActiveScaffold::DataStructures::ActionLinks uzanan kısa Yani

<% active_scaffold_config.action_links.each :record do |link| -%> 
    # Displays the link (code removed for brevity) 
<% end -%> 

, orada görünmüyor: bağlantıları görüntülenirken, ActiveScaffold (_list_actions.rhtml olarak) bunu yapar

En azından genel olarak değil, bunu yapmanın bir yolu olun.

Yerinde olsaydım, order_by! adlı bir öğeyi eklerim. Burada, uygun bir sırayla semboller dizisini iletirsiniz ve @set beldesini kullanır. Bu şekilde, özel işlemlerinizi ekledikten sonra bunu çağırabilirsiniz.

İlgili konular