Це коротка замітка із серії про ті ж форми в Rails. Мова буде іти про формування селектів, часового поясу та дати.
Почнем з селектів(скелетний):
формування options прямо з моделі(бази)
Селект для моделі:
При роботі з моделями опускається індекс вибраної option так як вона автоматично береться з city_id, тому варіант із формування опцій з колекцій більше підходить для роботи з моделями.
Що до формування часового поясу то тут все просто:
<%= time_zone_select(:person, :time_zone) %>
Скелетний варіант вибору дати наступний:
<%= select_date Date.today, :prefix => :start_date %>
дата складається з трьох окремих слекторів( частин), і звернутись до них можна буде використавши префікс і отримавши у відповідь хеш зі значеннями :year, :day, :month. Перетворивши отримані частинки в інт( to_i) можне скористатись для обробки методом Date.civil()
Почнем з селектів(скелетний):
<%= select_tag(:city_id, '<option value="1">Lisbon</option>...') %>
формує select;
<%= options_for_select([['Lisbon', 1], ['Madrid', 2], ...], index) %>
формує options для select де index це ключ елемента який має бути вибраним;
<%= options_from_collection_for_select(City.all, :id, :name) %>
Селект для моделі:
<%= f.select(:city_id, [['Lisbon', 1], ['Madrid', 2],...]) %>
при використанні form builder
<%= select(:person, :city_id, ...) %>
де person це наша модель і має поле city_id, options формується по попередньму принципу, або використовємо:
щоб опустити використання options_from_collection_for_select
Що до формування часового поясу то тут все просто:
<%= time_zone_select(:person, :time_zone) %>
Скелетний варіант вибору дати наступний:
<%= select_date Date.today, :prefix => :start_date %>
дата складається з трьох окремих слекторів( частин), і звернутись до них можна буде використавши префікс і отримавши у відповідь хеш зі значеннями :year, :day, :month. Перетворивши отримані частинки в інт( to_i) можне скористатись для обробки методом Date.civil()
Дата для моделі:
<%= date_select :user, :created_at %>
де user це відповідно модель, і при new, update, дані будуть автоматично сформовані. Як і в попередньому варіанті відповідь буде складатись з 3-х частин(можна побачити в params[:user] як і всі інші параметри що будуть привязані до моделі) сreated_at+index згенерований хелпером для того щоб він міг розрізнити в якому порядку обробляти. Додатковими опціями є :start_year і :end_year, які я думаю ви і самі вже здогадались для чого.
Для більш детальної інформації що до дат можете глянути тут!
No comments:
Post a Comment