2016-03-24 19 views
1

'u seçin Çalışanlar için açılır liste oluşturdum.Koleksiyondaki bir nesnenin değerini alma

  • Ne İstiyorum?

Her biri için tam Ad seçmek istiyorum. Formun

  • Tür:

Ben simple_form kullanın. Aslında var:

= f.input :person_id, label: "Employee", collection: @employee, prompt: "Select employee" 

Sonucu (Biliyorum, bu referanstır):

enter image description here

Ben collection_select kullanın, ancak simple_form toplama türüne ilişkin doğrulama desteklemiyor önce

. Collection_select için kod. Bu aşağı açılır liste, düzgün bir şekilde tam adı görüntüler.

= f.collection_select :person_id, @employee, :id, :fullName, {prompt: "Wybierz pracownika"}, {class: "form-control"} 

Güncelleme: fullName bir person.rb modelinde bir yöntemdir.

def fullName 
    "#{first_name} #{last_name}" 
end 

Nesne çalışanı.

@employee = Person.where.not(type: "Client") 

cevap

1

Bunu yapmanın en kolay yolu yardımcı olacağını düşündüğümüz

Ya

= f.input :person_id, label: "Employee", collection: @employee.fullName, prompt: "Select employee" 

geçerli:

= f.select :person_id, options_for_select(@employees.map{|e| [e.fullName, e.id]}), {:prompt=>"Wybierz pracownika", :required => true} 

Bu seçme seçenekleri olarak tam adlarını gösterir ve değerler olarak kimlikleri sevk edecek formu ile.

+0

Kodunuzu kullandığınızda bir sözdizimi hatası var: beklenmedik '|', bekliyor ')' –

+0

yanıtı şimdi deneyin! –

+0

Düzgün çalışma: f.select: person_id, options_for_select (@ employees.map {| e | [e.fullName, e.id]}), {: prompt => "Wybierz pracownika",: required => true} –

1

Bu kod aşağıda gibi izleyin:

<%= f.collection_select(:person_id, Model.all, :person_id, :fullName,{:prompt=>"Wybierz pracownika"}, {:class => 'form-control'}) %> 

Sen MODEL_NAME değiştirecektir. Sana

İlgili konular