Итак, у меня есть еженедельный просмотр календаря, и у меня есть маршрут, настроенный для приема /: год /: месяц /: день для даты начала.Рельсы маршрутов с датами
match "events/(:year/:month/:day)" => "events#index",
:constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ },
:as => "events_date"
У меня есть два вопроса относительно использования этого маршрута. Во-первых, при разборе Params, это то, что я делаю:
unless params[:year].nil? || params[:month].nil? || params[:day].nil?
start_date = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)
end
start_date = start_date.nil? ? Date.today : start_date
Это кажется мне довольно многословен и вид некрасиво. Есть ли способ лучше?
И, делая ссылку на другую неделю в календаре (для подкачки недели в неделю), я должен сделать что-то вроде
#assume an date object with the desired start date
link_to events_date_path(date.strftime('%Y'), date.strftime('%m'), date.strftime('%d'))
Который также, кажется, своего рода многословным и некрасиво. Каков наилучший способ работы с датами в маршрутах?
Есть ли причина, по которой он должен быть читаемым человеком и в этом формате? Было бы разумнее, если бы оно было настроено как совпадение «events/(: date)» где: дата заканчивается как «2012-05-01», и вы можете сделать прямой strftime на этом в настоящий объект даты? –
Нет, это полностью личный проект, это столько же упражнений по программированию, что и настоящая проблема. – DVG
Я полагаю, что тогда я отвечу на реальное поле ответа. ;) –