среда, 28 марта 2012 г.

Rails find_or_create_by

Метод find_or_create_by обычно принимает один аргумент, но если нужно создать записть с несколькими параметрами, то можно написать:
GroupMember.find_or_create_by_member_id_and_group_id(4, 7)


понедельник, 12 марта 2012 г.

локальный RDoc сервер


Чтобы посмотреть документацию к установленным гемам, можно выполнить
gem server
и перейти по адресу http://localhost:8808, в котором будет список гемов и ссылки на локальную документацию.

понедельник, 27 февраля 2012 г.

Backbonejs и контроллеры в Rails

Когда я первый раз столкнулся с backbone, одной из проблем было то, что не работали callback'и, которые я передавал в .save(), .fetch() и .destroy().
Оказалось, что backbone в ответ на эти действия ждет не просто заголовок head :ok, а полное значение переменных.

пятница, 24 февраля 2012 г.

Переопределение json в Ruby on Rails

Помимо способа, предложенного здесь, есть еще один метод переопределения отдаваемого json контента:

Этот способ не такой гибкий, как переопределение as_json(), но его иногда хватает с лихвой.

четверг, 2 февраля 2012 г.

Multiselect в Rails.

Чтобы создать мультиселек в рельсах, можно использовать обычный select с параметром multiselect
= form_for @thing do |f|
  = f.select :user_tokens, 
      options_from_collection_for_select(User.all, :id, :name, @thing.users.collect {|u| u.id}),
      { :include_blank => true}, 
      {:class => "select_multiple", :multiple => true}

Вторым параметром для хэлпера select является коллекция, которая будет преобразована в <option val="val">Name</option>, третьим - опции (в приведенном примере задействована опция включения пустого <option> в начале), четвертым - параметры html.

Для получения коллекции используется функция options_from_collection_for_select, ее формат:

options_from_collection_for_select(collection, value_method, text_method, selected = nil)
collection - коллекция
value_method - метод коллекции, который будет использоваться для получения val
text_method - метод коллекции, который будет использоваться для получения Text 
<option val="value_method>text_method</option>
selected - необязательный параметр, является массивом выбранных записей. Если value совпадает с одинм из значений массива select, то к соответсвующему <option> присваивается атрибут selected
<option val="val" selected>name</option>

воскресенье, 29 января 2012 г.

Declarative authorization snippet

Гем declarative authorization позволяет осуществить ролевую авторизацию и имеет много плюшек.
При наличии в контроллере нестандартного действия, его следует указать гему в начале контроллера следующим образом:

Rails console переменные _

Работая в консоли rails, часто приходится запоминать запись или набор записей в переменной для дальнейшего анализа, но иногда легко забыть присвоить этот самый набор переменной, просто напечатав уловие выбора. Это можно исправить, используя маленький трюк - присвоив переменной символ подчеркивания "_", она инициализируется последним выражением, например:

понедельник, 23 января 2012 г.

Переопределение as_json Ruby on rails

Часто бывает нужно изменить то, как сервер отдает json. Для этого, начиная с третьей версии рельсов, можно переопределить метод as_json в модели, экземпляры которой будут отдаваться на растерзание по первому запросу скрипта.

Рассмотрим несколько простых моделей:


Теперь допустим, что мы хотим получить AJAX запросом все посты вместе с комментариями. Переопределив метод as_json модели Post, можно будет одним ответом отослать всю инфомацию о постах сразу:


До включения метода адрес /posts.json выдавал следующее:

После:

Итак, список параметров as_json:

   
Документация по медоду as_json доступна здесь

SublimeText 2 установка в Debian


Установка SublimeText 2 для Debian, используя репозитории Ubuntu:
взято отсюда.

Как сказано в исходном сообщении, с помощью утилиты add-apt-repository можно добавлять в список источников репы Ubuntu.

Select, multiple select, group multiple select

Пафосные мультиселекты
Есть просто поиск по группе, есть поля с множественным выбором. Также есть возможность динамически перестраивать содержимое списка.
Распространяется по лицензии MIT