«Новинки» в 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

Вам также может помочь