Мыслители встречаются редко, практики еще реже, но реже всего - мыслители-практики. - Фредерик Брукс, "Мифической человеко-месяц"
Сообщения
RubyOnRails и Flex (продолжение)
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Задача: после того, как пользователь расчитает заказ в калькуляторе стоимости печати , у него может возникнуть желание сохранить данный расчет. Такую возможность имеют только зарегистрированные пользователи. Т.е. необходимо проверить - прошел ли пользователь авторизацию на сайте. Решение: проверим статус пользователя, т.е. пошлем из Flex-приложения GET-запрос в Rails-приложение, для чего создадим вот такой HTTP-сервис: <mx:HTTPService id="LoginReq" url="http://наш_домен/auth" result="httpLoginReqResultHandler(event)" useProxy="false" /> ... public function httpLoginReqResultHandler(event:ResultEvent):void { var is_auth:Boolean = Boolean(event.result); if (is_auth) { ... } else { ... } } ... <mx:Button id="btSave" click="{LoginReq.send()}"> Осталось только прописать в Rails-приложении метод auth: //orders_controller.rb def auth render :text => signed_in? end //route...
RubyOnRails и Flex
- Получить ссылку
- X
- Электронная почта
- Другие приложения
С самого начала, приступая к работе над сайтом типографии , я решил, что онлайн-калькулятор стоимости печати буду писать на Flex, но потом передумал и сделал на Ruby. Во-первых, потому что программировать на Ruby - это одно бесконечное удовольствие), а во-вторых, я, признаться, боялся, что будет не так просто подружить Rails и Flex, и что в итоге все обернется паникой и продолжительной депрессией. К удивлению, все оказалось более чем легко и просто (в чем я убедился, когда таки набрался решимости и переписал все с Ruby во Flex). Ниже опишу несколько задач по Rails + Flex и их решения. Задача: на стартовой странице сайта отображается список видов изделий (буклеты, листовки и т.п.), стоимость которых пользователь может посчитать в онлайн-калькуляторе. При клике на название изделия нужно а) загрузить страницу с калькулятором, б) передать в калькулятор ID изделия, чтобы активировать режим расчета именно того изделия, которое выбрал пользователь на стартовой странице. Решение...
Определяем в Rails название города по IP посетителя сайта
- Получить ссылку
- X
- Электронная почта
- Другие приложения
remote_ip = request.remote_ip result = Net::HTTP.get(URI.parse("http://ipgeobase.ru:7020/geo?ip=#{remote_ip}") ic = Iconv.new('UTF-8', 'WINDOWS-1251') conv_res = ic.iconv(result + ' ')[0..-2] Вот, собственно, и все. Название города в conv_res, вместе с названием региона и прочей информацией, которую выдает по IP замечательный ресурс ipgeobase.ru )
Загрузка файлов по FTP из Rails
- Получить ссылку
- X
- Электронная почта
- Другие приложения
$ rails g controller Ftp upload ../app/controllers/ftp_controller.rb require 'net/ftp' class FtpController < ApplicationController def upload ftp = Net::FTP.new('сервер') ftp.passive = true ftp.login(user = "пользователь", passwd="пароль") ftp.putbinaryfile("путь к файлу", File.basename("название файла")) ftp.quit() end end Все просто. Устанавливаем соединение с ftp-сервером и передаем путь к файлу. Но если нам неизвестен путь к файлу? Тогда все становится несколько сложнее. Для примера - добавим форму, где пользователь может выбрать файл для загрузки... ../app/views/ftp/_ftp.html.erb <% form_tag '/upload', :method => :post, :multipart => true do %> <label>Выберите файл</label><%= file_field 'upload', 'filedata' %> <%= submit_tag "Поехали!" %> <% end %> Редактируем контроллер - def upload file = params[:upload]...