2010-12-13 13 views

cevap

48

.

HTML:

<input type="checkbox" name="tag_ids[]" value="1" /> 
<input type="checkbox" name="tag_ids[]" value="2" /> 
<input type="checkbox" name="tag_ids[]" value="3" /> 

Denetleyici:

tag_ids = params[:tag_ids] 

(Tabii, muhtemelen görünümünde form_for tabanlı yardımcıları kullanıyor ve olurdu bu nedenle etiket kimlikleriyle Bu kitle atama. sadece en genel örnektir.)

+0

yapmanın "yolunu raylar" konulu

<%= form_for(@cleaner) do |f| %> <p> <%= f.label :cities %><br /> <% for city in City.all %> <%= check_box_tag "cleaner[city_ids][]", city.id, @cleaner.cities.include?(city) %> <%=h city.name %><br /> <% end %> </p> <div class="actions"> <%= f.submit %> </div> <% end %> 

Ve

def cleaner_params params.require(:cleaner).permit(city_ids: []) end 

kontrolörü

yılında

Sen tam öğretici bulabilirim? Tag_ids [] boş bir dizi olarak gönderilsin mi? –

+4

@Joe Van Dyk: HTTP isteğinde "tag_ids []" adında bir değer gönderilmediyse, Rails 'tag_ids'' params' içine koymayı düşünmez. Bunu kendiniz hesaplamak zorundasınız, örneğin, params [: tag_ids] || = [] ' – Matchu

+8

Bu HTML'yi elde etmek için' f.check_box: tag_ids, {multiple: true}, 1, nil' yapabilirsiniz. . "Nil", "gizli bir giriş olmaksızın" anlamına gelir. Bu tür bir şey zayıf bir şekilde belgelenmiştir. –

-2

checked param kullanmak isterseniz şunu yazmalısınız:

check_box_tag "tag_ids[]", 1, true 

Ve bu:

check_box_tag 'tag_ids[]', 1, true 

Anlamak biraz zaman aldı, ben birisini yardımcı olacağını umuyoruz. girişinizi bir dizideki yerleştirilmesini sağlayan seçeneği: Bir 'gerçek çoklu' var, İşte

nedeni:

+0

Yani "tek tırnak" ve "çift tırnak" ile "burada" bir fark yaratıyor? –

14
f.check_box :tag_ids, {multiple: true}, 1, nil 

doğru cevap. Birden fazla yoksa: true seçeneğine izin verilmez.

0

Örneğin, birden çok temizleyicinin birden çok şehirde bulunabileceği bir görünüm ve denetleyici örneği. Kullanıcı bir onay unselects ne olur bu https://kolosek.com/rails-join-table/

İlgili konular