2011-05-31 22 views
5

Rails'te onay kutularının nasıl çalıştığını merak ediyordum? Tablo, veri tabanının içinde ne olmalıdır (tamsayı, string, vb.)? Kutuları kontrol etmek için 3 farklı değer nasıl verirsiniz ve kullanıcı sadece 1'i seçebilir (favori rengi: kırmızı, yeşil veya mavi)?Onay kutuları Rails'te nasıl çalışır?

Raylara yeniyim ve birçok örnek gördüğümden baştan sona bir açıklamaya yardımcı olurdum ama her şeyi başlangıçtan açıklamıyorlar.

Teşekkür ederiz.

cevap

4

Onay kutuları ve veritabanı arasında bir ayrım var. Onay kutuları HTML'dir. Veritabanı Modellerinize bağlıdır ve onay kutularıyla ilgisi yoktur.

HTML görünümünüzde bir onay kutusu kullandığınızda, formunuz bazı parametreler gönderir. Varsayılan olarak bu parametre "1" değerine (String olarak) sahip olacaktır. Rails yardımcıları ayrıca, "0" değerini onay kutusu girdisi ile aynı adla gönderen ek bir gizli giriş oluşturur. Parametrelerin ayrıştırılması Raylar ilk değeri alır, bu yüzden verilen parametreye onay kutusu işaretliyse "1" değeri verilir ve eğer yoksa "0" değeri verilir.

Şimdi, veritabanında kayıtlı değer, modelinizdeki öznitelik türüne bağlıdır. Belirli bir alanı boolean olarak tanımladıysanız, o zaman boolean olarak saklanır (bazı sihir vardır, çünkü "0" dizesi ruby'de 'false' olarak kabul edilmez), eğer özniteliği tamsayı olarak tanımlarsanız, o zaman 1 veya 0 değeri ve eğer bir String ise, "1" veya "0" olacaktır.

Onay kutusu için bu 3 değer hakkında bir <select> veya bir radyo düğmesi kullanırdım.

Red: <input type="radio" name="colour" value="red" checked="checked"/> 
Green: <input type="radio" name="colour" value="green" /> 
Blue: <input type="radio" name="colour" value="blue" /> 

ActionView::Helpers::FormHelper#radio_button yöntemine bakın.

+1

Bu, benim cevabımla aynı şeydir, ya da belki de bana aynı şeyi söylemelisiniz? :) –

+1

@Ryan: Cevap yazmaya başladığım ilk kişiydim, sadece daha yavaş yazıyorum. Sadece aynı şeyleri düşünüyoruz ;-) – Arsen7

+3

@ Arsen7: Neden birbirimize yorum yazdığımızı bile bilmiyorum. Paylaşılan zihnimiz aracılığıyla iletişim kurabilmeliyiz. –

İlgili konular