«Новинки» в Edge Rails
Новое в ActionView и хелперах
Теперь защита от Cross Site Scripting (XSS) предоставляется по умолчанию. Теперь для того, чтобы отрендерить во view HTML-содержимое потребуется использовать метод html_safe!:
<%= 'my safe string'.html_safe! %>
Из-за этого потребовалось модифицировать код многих хелперов. Метод distance_of_time_in_words теперь может выдавать значения over, about и almost. Это позволит более точно указывать время, прошедшее с определённого момента в прошлом:
assert_equal "almost 2 years", distance_of_time_in_words(from, to + 2.years - 3.months + 1.day) assert_equal "about 2 years", distance_of_time_in_words(from, to + 2.years + 3.months - 1.day) assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 3.months + 1.day) assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 9.months - 1.day) assert_equal "almost 3 years", distance_of_time_in_words(from, to + 2.years + 9.months + 1.day)
Теперь можно явно передавать коллекцию объектов в метод fields_for, как в следующем примере передается коллекция @active_projects:
<% form_for @person, :url => { :action => "update" } do |person_form| %> ... <% person_form.fields_for :projects, @active_projects do |project_fields| %> Name: <%= project_fields.text_field :name %> <% end %> <% end %>
В метод content_tag_for третий параметр, который ранее был необязательным, теперь используется как префикс для генерации имени CSS-класса элемента:
<%= content_tag_for(:li, @post, :published) %> # => <li id="published_post_123" class="published_post">...</li>
Новое в модулях ActiveResource и ActiveRecord
В модуль ActiveResource добавлен метод update_attributes, знакомый по работе с модулем ActiveRecord. Создание объекта с помощью ассоциации has_one с наложенными на ассоциацию ограничениями, автоматически приводит к заполнению полей объекта значениями, заданными в ограничениях:
class Blog has_author :commit_author, :class_name => 'Author', :conditions => {:name => "Luciano Panaro"} end @blog.build_commit_author # => #<Author name: "Luciano Panaro" ... >
В метод accepts_nested_attributes_for в ActiveRecord добавлен параметр limit, задающий число записей для обработки. Параметр _delete переименован в _destroy чтобы лучше отображать специфику выполняемых действий. Добавлен параметр autosave, позволяющий не сохранять связанные объекты, если они являются вновь созданными.
Новое во «внутренней кухне»
Метод Hash#from_xml теперь поддерживает разбор значений тега CDATA при парсинге XML-файлов. Обработка глобальных исключений перенесенаRails::Application добработан для лучшей инкапсуляции функционала, отвечающего за запуск и конфигурирование приложения. Кроме того, в этот модуль перенесён функционал, отвечающий за инициализацию в модуль ActionDispatch::Rescue, так что теперь обработка исключений осуществляется на уровне Rack.
Модуль Rails::Application добработан для лучшей инкапсуляции функционала, отвечающего за запуск и конфигурирование приложения. Кроме того, в этот модуль перенесён функционал, отвечающий за инициализацию.
Подготовлено по материалам http://weblog.rubyonrails.org.
Перевод КОМТЕТ komtet.ru