Odpowiedz

67

Można przyjrzeć the Rails documentation. Tak czy inaczej, w postaci:

<%= f.collection_select :provider_id, Provider.order(:name),:id,:name, include_blank: true %> 

Jak można się domyślić, należy wstępnie zdefiniować e-usługodawców w innym modelu - Provider, aby mieć gdzie ich wyboru.

+0

, więc model będzie contact.rb, ale gdzie powinienem umieścić tę logikę drop-down? przepraszam za naiwne pytanie, jestem nowy w rozwoju RoR – iCyborg

+0

Twoje pytanie jest OK. Jeśli przyjrzysz się strukturze 'app/views/contacts', znajdziesz plik' _form.html.erb'. Możesz spróbować go tam umieścić. Ten "widok częściowy" jest odpowiedzialny zarówno za tworzenie, jak i aktualizowanie działań wygenerowanego przez ciebie rusztowania. –

+3

zaleca przeniesienie zamówienia (: nazwa) do zakresu (który jest metodą) w modelu. Nie jest to wielka sprawa, ale z biegiem czasu okaże się, że posiadanie tego, co jest w istocie logiką biznesową w ten sposób (zamówienie) na szablonie widoku, staje się bałaganem. Przenieś to do kontrolera lub najlepiej modelu i udostępnij tam zakres, z którego możesz skorzystać. Jeden przykład - jeśli skończysz z trzema ekranami lub szablonami, które korzystają z menu rozwijanego, posiadanie kolejności w widokach oznacza duplikację 3 X. Posiadanie go w modelu oznacza, że ​​jest on zdefiniowany w jednym miejscu i jest to jedyne miejsce, w którym można go zmienić, co jest dobre. –

3

Proszę spojrzeć here

Albo można użyć tagu szynach lub używać zwykłego znaczniki HTML tag

Szyny

<%= select("Contact", "email_provider", Contact::PROVIDERS, {:include_blank => true}) %> 

* powyżej linii kodu byłoby stać HTML kod (znacznik HTML), znajdź go poniżej *

tag HTML

<select name="Contact[email_provider]"> 
    <option></option> 
    <option>yahoo</option> 
    <option>gmail</option> 
    <option>msn</option> 
</select> 
+0

dzięki, jestem nadal mylone, rozumiem kod