Raylar düzenlenemez metin alanı


82

Aşağıdaki şekilde yazılmış bir form_forum var:

<div class="field">
    <%= location.label :city %>
    <%= location.text_field :city, :disabled=>true%>
</div>
<div class="field">
    <%= location.label :country %>
    <%= location.text_field :country, :disabled=>true%>
</div>

Gördüğünüz gibi 2 metin alanı devre dışı bırakıldı çünkü bunlar bir jquery işlevi tarafından otomatik olarak dolduruldu ve kullanıcının bunları işlemesine izin vermek istemiyorum. Sorun şu ki, bu şekilde, görünüm devre dışı bırakıldığı için bu parametreleri denetleyiciye aktarmıyor !!! Gizli alanı kullanmak istemediğime dikkat ederek, düzenlenebilir olmayan text_field'ı denetleyiciye geçirmenin başka bir yolu var mı, çünkü sonuçları bir metin kutusu içinde kullanıcıya göstermek istiyorum

TNX


göndermeden önce jquery ile alanları etkinleştirmiyor musunuz?
43'te apneadiving

Yapıyorum ... bunu yapmanın daha temiz bir yolu olup olmadığını bilmiyor musun?
Joe

Yanıtlar:


196

Yalnızca okunabilir hale getirin!

<%= location.text_field :country,:readonly => true%>

9
Şuna dikkat et. W3 şekilleri için spesifikasyon ayırt disabledve read-onlyve devre dışı girişleri formları ile sunulmalıdır gerektiğini açıkça ortaya koymaktadır.
Robin Fisher

1
Teşekkürler! Alanımı neden :disabled => trueteslim etmediğini anlamak için muhtemelen bir yarım saat daha harcardım .
Tom Harrison

3
Peki ya bu alanın Createeylem sırasında erişilebilir olmasını istiyorsam ?
Klon

1
Ancak bu yöntemle göndermeden önce herkes düzenleyebilir. Bu savunmasız değil mi?
mecyborg

1
Evet, bu savunmasızdır. Kullanıcı readonly="readonly", inputetiketin özniteliğini kaldırmak ve metin alanını istediği gibi düzenlemek için tarayıcısının "Geliştirici Araçları" nı kullanabilir (F12'ye basın) . Bunun güvenli olması için gerçekten ihtiyacınız varsa, giriş alanını tamamen kaldırın veya modeldeki form girişini doğrulayın. Zaten bu çok faydalı bir cevaptı.
BrunoFacca

1

İşin püf noktası, değiştirmek istemediğiniz herhangi bir şey için bir etiketle birlikte "nesne" kullanmaktır. İşte nasıl kodlamanız gerektiği:

<%= location.label(:country, f.object.country) %>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.