Sunday, January 22, 2012

Select, Date, часовий пояс в формах Rails

Це коротка замітка із серії про ті ж форми в Rails. Мова буде іти про формування селектів, часового поясу та дати.
Почнем з селектів(скелетний):
<%= 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) %>
формування options прямо з моделі(бази)

Селект для моделі:
<%= f.select(:city_id,  [['Lisbon', 1], ['Madrid', 2],...]) %>
при використанні form builder

<%= select(:person, :city_id, ...) %>
де person це наша модель і має поле city_id, options формується по попередньму принципу, або використовємо:

 <%= collection_select(:person, :city_id, City.all, :id, :name) %> 
щоб опустити використання options_from_collection_for_select
При роботі з моделями опускається індекс вибраної option так як вона автоматично береться з city_id, тому варіант із формування опцій з колекцій більше підходить для роботи з моделями.


Що до формування часового поясу то тут все просто:
<%= 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

 
 
Blogger Templates