Заметки Ruby программиста Всякие полезные наработки

3Май/110

Keep views simple

Some times you need complex logic in views to filter some fields from unregistered users and show default message for blank fields. This case instead of tons if statements you can use nifty helpers with the power of ruby blocks. Like this:

  def hide_field(object, field = nil, &block)
    if current_user # can? :read_fields, object # for cancan fans
      block_given? ? yield : object.send(field.to_sym)
    else
      'hidden'
    end
  end

  def stub_blank(object, &block)
    if object.present?
      block_given? ? yield : object
    else
      'not set'
    end
  end

And now in your views you can use it like this:

hide_field order, :contact_name
hide_field(order) { order.company.name }
stub_blank(order.employees_num)
stub_blank(order.employees_num) { I18n.t(:employee, :count => order.employees_num) }
hide_field(order) { stub_blank order.contact_name }

This small trick can save many lines of code in your views. Enjoy!

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.