Ruby & Rails: веб-разработка с удовольствием

Саморазвитие
15 сентября 2012 в Москве на территории центра Digital October состоится 11-ая конференция веб разработчиков на Ruby и Ruby On Rails – RailsClub’Moscow 2012. Регистрация http://railsclub.timepad.ru/event/29192 0
0 комментариев ![]() Так сложилось что при работе с ajax-формами в Rails 3 до сегодняшнего дня мне хватало либо стандартной опции :remote => true, либо же приходилось писать какой-то жутко-кастомный функционал отправки формы на сервер. Сегодня обнаружил несколько полезных опций, которые могут помочь, если требуется выполнить какой-то код до отправки ajax-формы на сервер, после успешной отправки или при возникновении ошибки. Наверное это достаточно стандартные штуки, но я узнал об их существовании совсем недавно. Предположим что проект разрабатывается в связке rails 3 + jquery (хотя и для prototype.js тоже есть тоже что-то подобное). Если есть ajax-форма, то всегда можно повесить listener-ы на следующие события:
$("#tool-form").bind("ajax:before", function() { /* производим какие-то действия до отправки формы на сервер */ }); $("#tool-form").bind("ajax:complete", function() { /* производим какие-то действия после получения ответа от сервера */ }); $("#tool-form").bind("ajax:success", function() { /* производим какие-то действия после получения ответа от сервера с кодом 200 */ }); $("#tool-form").bind("ajax:error", function() { /* производим какие-то действия если сервер вернул ошибку */ }); Возможно эта небольшая заметка сэкономит кому-то пару минут на чтение исходников jquery_ujs.js =) Продолжая цикл приятных мелочей хочу поведать тем кто еще не знает конструкцию returning и освежить в памяти тех кто уже знаком с ней. Нередко при написании rails приложения возникает потребность получить объект, что-то с ним сделать и возвратить вновь полученное значение. Это можно сделать следующим образом:
def change_state(object_id, new_state) object = find(object_id) object.state = new_state object.save object end
С помощью констркции returning данная задача приобретает более красивый внешний вид:
def change_state(object_id, new_state) returning find(object_id) do |object| object.state = new_state object.save end end Таким образом код становится более понятным и легко читаемым. Думаю в проекте каждого рельсовика встречались места, где нужно провести какое-то действие с объектом, но объекта может и не быть (object == nil), проверки вида current_user && current_user.admin? или post && post.author == user не очень красиво выглядят. Недавно я наткнулся на очень маленький, но безумно приятный метод try, который преобразовывает написанное выше в следующие конструкции: current_user.try(:admin?) post.try(:author) == user Я думаю, что это делает код намного более красивым, при сохранении логики (для объекта nil try вернет nil, а для непустого объекта - результат выполнения инструкции). Всем, кто еще не использует данную конструкцию в своих проектах - советую обратить на нее особое внимание. Сегодня изучая исходные коды Ruby on Rails столкнулся с такой, на мой взгляд, очень полезной штукой. Предположим, что у вас есть функция, которая может принимать на вход как единственное значение, так и массив. Соотвественно в зависимости от этого имеем две ветки обработки:
Читать полностью У людей, которые только начинают изучать язык Ruby, часто возникает вопрос, а что же такое блок, как им пользоваться, и в чём отличие блока от таких сущностей как proc и lambda. В этой статье я попытаюсь ответить на данный вопрос. Читать полностью Шаблон функционального программирования MapReduce с одной стороны идейно очень прост, а с другой - реализация распределенной эффективной системы MapReduce довольно сложная задача, с можеством интересных подзадач и расширений. На основе этого шаблона
На язык Ruby "map and reduсe" переводится как "map and inject", но, конечно, за MapReduce стоит больше, чем просто комбинирование двух методов. Мы начнём изучение MapReduce с несколько искусственной библиотеки, которая отображает суть и даже может использоваться для поточной обработки данных, но, конечно, отличается от того, что обычно имеют в виду под промышленной системой MapReduce. Читать полностью Начитавшись как-то на ночь про всякие хаскеллы и лиспы, решил немного "офункционалить" руби. Первое, в чем я разобрался, было "pattern-matching" определение методов. Вот об этом и хочу рассказать. Читать полностью От ERb к HamlВсем хорошо известно, что родным способом генерации всевозможных HTML страничек в рельсах является использование Ruby Templating, ERb. Честно признаюсь, до недавнего времени считал его единственным и вполне приемлемым. Но все изменилось, когда я познакомился с Haml. В данной статье я собираюсь рассказать об этом знакомстве. Читать полностью |
Облако тегов
#rails
amazon web services
array
blocks
bootstrapping
closures
cloud computing
console
container
education
email
emerge
fiber
finders
gentoo
Getting Real
helper
hosting
JavaScript
jquery
lambda
lazy
liquid
metaprogramming
monkey patching
passenger
pipeline
plugin
proc
qsort
rails
rails 3
returning
ror
ruby
sass
serialize
snippets
tricks
tutorials
ubuntu
views
боевые искусства
вакансия
искусство
массив
мысли вслух
работа
Работа
фриланс
Ближайшие события
![]() январь 2021
![]()
Пн
Вт
Ср
Чт
Пт
Сб
Вс
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
|