Scalable text area
Маленькое полезное - штука, которую я впервые увидел в TaskPro. Делает рядом с textarea две кнопки, которые позволяют делать ее больше или меньше. В качестве бонуса можете попробовать добавить динамический расчет размеров textarea в зависимости от уже вбитого в обьект количества символов.
Применяю во всех последних проектах/прожектах.
# Works just as the normal +text_area+ but also includes the buttons to extend or minimize the textarea to accomodate more text.
# Especially handy for long pieces of text
def scalable_text_area(*opts)
unless opts.last.is_a?(Hash)
opts[-1] = {}
end
opts.last[:rows] = 10 unless opts.last[:rows];
ident = "#{opts[0]}_#{opts[1]}"
o = ''
o << content_tag(:a, '[Smaller]', :href => '#',
:class => 'smallctr',
:onclick => "if($('#{ident}').rows > 3 ) $('#{ident}').rows -= 2; return false;")
o << content_tag(:a, '[Bigger]', :href => '#',
:class => 'smallctr',
:onclick => "$('#{ident}').rows += 2; return false;")
o << "<br />"
# forward
o + text_area(*opts)
end
class ActionView::Helpers::FormBuilder
def scalable_text_area(method, options = {})
@template.send(:scalable_text_area, @object_name, method, options.merge(:object => @object))
end
end