Rails 2.0: Views, As You Like Them
Макар да ми се е налагало сравнително рядко, писането на алтернативна версия на дадена web-страница не е от най-интересните занимания. Причините, които налагат използването на алтернативни версии, обаче, са не една и две – на пазара отдавна съществуват плеяда мобилни устройства с възможност за достъп до мрежата, а появата на по-сериозни играчи от рода на N-сериите на Nokia или iPhone (sux!) на Apple са предпоставка за оптимизация на сайтовете, борещи се за повечко потребителско внимание.
Старите версии на Rails разполагаха с възможност да отговарят с различни версии на дадена страница, в зависимост от заявеният файлов формат, и всъщност вършеха голяма част от работата. Макар и полезно за cross-site scripting, съществуващото досега решение не беше в състояние да се справи с различни версии на файлове от един и същи формат – иначе казано: можехте да отговаряте с различни файлове ако се извика products или products.xml, но не можехте да имате две версии на products, зависими от типа на клиентите. Да, имаше възможност за добавяне на нови handler-и за файловите формати чрез добавяне на MIME::Type.register-инструкции във файла environment.rb, но добавянето на нов handler презаписваше старата асоциация, оставяйки Ви в небрано лозе.
Явно разработчиците на Rails са помислили повечко по въпроса и в config директорията на всяко приложение вече разполагате с чисто нов конфигурационен файл на име /config/initializers/mime_types.rb. В него можете да добавяте alias-и за всеки файлов формат, което Ви позволява да управлявате съдържанието, изисквано от различни клиенти. Например за добавяне на версия за iPhone на началната страница на даден сайт можете да използвате следното:
Mime::Type.register_alias "text/html", :iphone
За да бъдете сигурни, че клиента който разглежда страницата Ви идва от iPhone можете да добавите следното в Applications Controller-a:
class ApplicationController < ActionController::Base before_filter :test_for_iphone_client private def test_for_iphone_client if request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod)/] request.format = :iphone end end end
След това в контролера можете да добавите конструкция, абсолютно идентична на тези от старите версии на Rails с която да осигурите различните view-та:
def index respond to do |format| format.html format.iphone end end
Разбира се, самите view-та трябва да седят в отделни файлове, именувани спрямо новите конвенции: index.html.erb и index.iphone.erb.
Новостите в Rails продължават да ме изненадват…
Маркери: rails, tips
За тази статия
В момента четете "Rails 2.0: Views, As You Like Them", статия в stinger's thoughts
Отпечатване на статията
- Публикувана на:
- 31.10.2007 в 13:11
- Категория:
- Web Development
- Изпращане:
- Изпрати чрез email
Категории
- Books (10)
- Linux/UNIX (66)
- Movies (32)
- Music (70)
- Web Development (57)
- Други (180)






















IE8 Webslice
RSS с публикации
Няма коментари
RSS с коментaрите