• Как лучше реализовать авторизацию для большого проекта?

    premas
    @premas
    Full-stack web-developer
    Devise очень легко кастомизируется. Вообще никогда не было проблем с ним. И в модальное окно выводится, и аякс-авторизация легко делается, и авторизация через мобильные приложения без боли.

    Может перед тем как изобретать велосипед скажете, что именно не получается кастомизировать?
    Ответ написан
    3 комментария
  • Поиграем в Ruby on Rails?

    @vsuhachev
    obj.model_name.human

    И локализацию положить в ru.activerecord.models
    Ответ написан
    1 комментарий
  • Как открыть один и тот же объект из разных методов в контроллере?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Сессии
    Ответ написан
    Комментировать
  • Как вызвать метод из контроллера без перенаправления?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Как и написал Дима достаточно просто добавить remote: true
    Но в контроллере в свою очередь нужно что нить отрендерить или по умолчанию конроллер будет искать controller_name.html.erb.

    В контроллере необходимо добавить
    render :nothing => true, :content_type => 'text/html', :status => 200


    Если на нажатие кнопки всё-же требуется какая либо реация визуальная то ознакомьтесь с данной страницой rusrails.ru/working-with-javascript-in-rails
    Ответ написан
    Комментировать
  • Как вызвать метод из контроллера без перенаправления?

    MAXOPKA
    @MAXOPKA
    Я так понимаю, что нужно делать ajax-запрос
    Для этого поставьте гем jquery-ujs, и сделайте вызов хелпера таким:
    = link_to "Start test", "start_new_test", class: "btn btn-primary", remote: true
    Ответ написан
    Комментировать
  • Как сделать последовательное выполнение в проекте опросы-викторины?

    nbekseitov
    @nbekseitov
    Ruby developer
    Попробуйте поизучать данный пример. Тут как раз пошаговое выполнение.
    https://github.com/limitedmage/railsquiz
    Ответ написан
    Комментировать
  • Прошу объяснить, как работает self и protected в Ruby?

    viktorvsk
    @viktorvsk
    Public - должны использоваться очень аккуратно. Чем меньше - тем лучше. Это внешнее API для других классов, которые будут его использовать. А чем меньше можно узнать, тем быстрее это можно выучить и запомнить, тем меньше ошибок сделать.

    Protected - это те методы, которые доступны потомкам (классам, что наследуют), но не доступны внешним классам. Грубо говоря, удобно, когда вы знаете, что от класса А будут наследовать много-много разных классов, и у этих классов будет один (или много, не важно) общий метод. Который, однако, совершенно не нужен внешним классам. Если бы не было протектеда, было бы 2 пути - сделать метод, который должен быть у всех потомков - публичным. Это плохо, потому что это лишняя информация для внешних классов. Или же - дублировать одинаковые методы в каждом классе потомке. Это плохо, потому что не DRY.

    Private - это те методы, который доступны только классу. То есть, грубо говоря, пользоваться ими вы можете только в том же файле, где идет определение класса. Например, удобно ими пользоваться для рефакторинга. Представим, что есть публичный метод, который уже много лет используют 100 разных, неизвестных классов. Но в этом методе - 500 строк. Менять метод нельзя, поэтому вы превращаете его в 10 строк-вызовов приватных методов.

    Лучше всего это усвоить, создав разные вариации и попробовав повызывать разные методы. 2 важных вещи, которые нужно помнить в Ruby:
    1) Разные ключевые слова для методов класса и экземпляра (private, private_class_method)
    2) Если тестируете поведение в консоли с использованием #send, то поведение будет не ООП-шное - #send игнорирует видимость методов

    С self все проще. По умолчанию, всегда self подставляется. Метод вызывается сначала для текущего объекта - потом смотрится наличие методов в предке и т.д. и т.д. до объекта Object. Зачем иногда явно пишут self ? Потому что в руби можно создавать методы вида def method=() end; и использовать их с пробелом: method = 2. Для этого, что бы дать понять, что используется именно метод, а не определяется локальная переменная, иногда прибегают к полной записи.

    P.S. Если что-то действительно не понятно даже здесь - берите любую книгу по ООП или википедию и пробуйте все в консоли на любом языке программирования, пока не уловите суть.
    Ответ написан
    4 комментария
  • Как всё успевать и не быть роботом?

    viktorvsk
    @viktorvsk
    - Ничего не нужно, никто никому ничего не должен
    - Работать нужно не минимум 8 часов, а то и больше, - а эффективнее (комплексное понятие)
    - Жить нужно комфортно (так же комплексное понятие, для разных людей включает разные аспекты: кому зарядка с утра, спорт, здоровое питание, кому - красноглазенье по ночам, утро в обед, пиво перед компом...)
    - Саморазвитие - это хорошо, но это так же строго индивидуально - кому книги, кому видео уроки, кому фильмы, кому хобби - если вы связываете вашу работу с интеллектуальной деятельностью, это значит, что вам нужно развивать интеллектуальные способности, а не способности в вашей предметной области. Книжки читать, как не крути - тоже сугубо индивидуально по эффективности. Разве что художественную литературу, на мой взгляд, не помешает читать людям всех профессий.
    - Планы - это неотъемлемая часть жизни. Настолько же неотъемлемая, как и неспособность их соблюдать. Нет, вы не зря составили все эти списки со спортом, здоровой едой, сном и работой по 8 часов и т.д.. И да, у вас не получится соблюсти все пункты. Эти 2 факта нужно принять, осознать и не сдаваться.
    Ответ написан
    24 комментария
  • Минимум для Junior RoR?

    Jeiwan
    @Jeiwan
    Какого-то конкретного списка нету. На одном месте работы могут быть сильно необходимы хорошие знании одного, на другом месте — другого. Серверная веб-разработка огромна. Именно поэтому джуниору необходимо иметь широкий багаж знаний и уметь ориентироваться в новых гемах, технологиях, подходах. Я бы сказал, что самое главное — уметь искать нужную информацию и быстро осваиваться в новом.
    Я считаю, что самый лучший способ научиться разработке на Рельсах и устроиться на работу — пройти курс на www.thinknetica.com/. Но придется попотеть :) Это курс — лучшее, что вообще есть в рунете, да и, наверное, во всём интернете. Не пользоваться такой возможностью просто глупо.

    1) Любые книги по Рельсам и (что тоже крайне важно) Руби.
    2) Подписаться на рассылку rubyweekly.com
    3) Самый заметный признак устаревшего кода — использование старого синтаксиса хешей:
    :a => 1, вместо a: 1 (не считая случаев, когда ключ хеша — не символ).
    Переход с 3 Рельс на 4 не сложен, но зависит от размера приложения и покрытия тестами. Лучше сразу учить 4 (да и 5 уже на подходе).
    Ответ написан
    6 комментариев
  • Минимум для Junior RoR?

    Freika
    @Freika
    Senior Ruby on Rails developer
    onrails.club/t/put-v-junior-ror-ruby-razrabotchiki/61 вот тут кой-чего понаписали, почитайте
    Ответ написан
    Комментировать
  • Минимум для Junior RoR?

    insiki
    @insiki
    broken pipe
    webils.ru/app/guest/?id=7341

    Вдобавок к ссылке выше:
    1. Rails 4. Гибкая разработка веб-приложений
    (Лично часто обращаюсь к 3-й главе, если есть вопросы)
    2. Статьи и сайт (он же на русском) покрывают практически все возникающие вначале вопросы. Углубляясь, чаще идем на apidock.com/rails и api.rubyonrails.org
    3. На 100% этих скринкастов всего 1-2% несостыковок по синтаксису.
    4. Также, если вы житель Санкт-Петербурга (или планируете переехать), можно записаться на этот отличный курс по RoR, если из другого города, то вот отличная площадка для обучения.

    ps:
    Не забываем про Convention over configuration - https://github.com/styleguide/ruby
    Ну и еще, не забываем, что Rails это Ruby - Крис Пайн - "Учись программировать"

    Список курсов по Ruby и отзывов.
    rubycourses.ru
    Ответ написан
    Комментировать
  • Можно ли парсить страницу в фоне на Rails + Ajax?

    S-anches
    @S-anches Автор вопроса
    Любитель всего и вся.
    Отвечу сам, можно. Косяк был в том, что неправильно строка с адресом доходила.
    Ответ написан
    Комментировать
  • PHP+Symfony или Ruby+RoR?

    viktorvsk
    @viktorvsk
    Для обучения у руби и рельс, на мой взгляд, есть неоспоримый плюс.
    Вот то, что называют порогом входа (я, признаться, не особо понимаю это), мне кажется, играет злую штуку. Например, на руби и рельсах Вы не сможете за 2 часа сделать сайт-визитку, отдать ее заказчику, получить деньги и расслабиться, считая себя крутым разработчиком.

    Для того, что бы довести дело до конца, на руби и рельсах нужно будем познакомиться со множеством сопутствующих технологий.

    Например, что бы начать с ним работать вообще - нужны *nix. Можно, конечно, продолжать юзать виндовс, но пользоваться виртуальными машинами, но это тоже - шаг вперед перед пхп с его денвером и т.д.

    Далее, что б установить интерпретатор, в 95% случаев вы поставите менеджер версий языка (rvm или rbenv), что уже много лучше, чем глобальная установка.

    Что бы запустить свой первый проект, Вам понадобится менеджер пакетов - что лучше, чем качать zip архивы и распаковывать в нужную директорию.

    Что б скачать некоторые пакеты, нужен будет гит, что само по себе очень круто.

    Когда будете выполнять какие-то учебные задания, Вам на выбор дадут познакомиться, как минимум, с тремя базами сразу, а не ограничиться одним мускулем.

    Итак, теперь вы приступили к созданию сайта-визитки, обладая уже неплохим багажом знаний для начала.

    Вот вы ее сделали, используюя архитектуру рельс и хоть какое-то понимание раздления кода, роутинга, хелперов и т.д.

    Дальше, нужно ж как-то показать заказчику результат? Самым первым вариантом, скорее всего, вы познакомитесь с Хероку - PaaS сервис вещь тоже довольно полезная.

    Но вскоре вы поймете, что он вас не очень устраивает. И попробуете разместить сайт-визитку на хостинге.

    Здесь Вам придется познакомиться с ВПС, базовой настройкой линукса, юникс-сокетами, понятиями работы различных веб-серверов

    Но вот Вы настроили свой сервер. Надо залить туда свой код. В руби Вам будет очень сложно пойти путем "использования ФТП плагинов в редакторе кода" - как-никак, а придется познакомиться с техниками нормального деплоя.

    Выглядит сложновато для начала, но зато Вы сразу познакомитесь со всем современным стеком технологий, которые очень сильно облегчает жизнь.

    Безусловно, весь этот процесс можно проводить на любом языке - где-то чуть проще, где-то чуть лучше. Но если в пхп можно обойтись без этого и долгое время даже не представлять, что можно деплоить код безопасно, с автоматическим откатом назад, если что-то пошло не так, да еще и с нулевым даунтаймом, то в руби вам придется сделать это сразу.
    Ответ написан
    4 комментария
  • Rails i18n. Проблемы с переводом даты. Как сделать?

    @RightWay
    Не знаю, что за "этот ямл". Но выводить надо вот так даты l(date, format: '%e %b')
    Надо только учесть что это хелпер.
    В твоем случае надо сделать вывод даты вот так: l(Date.today, format: :my_format)
    где :myformat надо добавить в yml с переводом, вот описание как rusrails.ru/rails-internationalization-i18n-api#do...
    Ответ написан
    2 комментария
  • Как сделать мультизагрузку изображений с помощью Carrierwave?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Ответ написан
    Комментировать
  • Как сделать мультизагрузку изображений с помощью Carrierwave?

    @vsuhachev
    Проблема в том что вы не создаете много объектов Photo каждый с одной картинкой (как вы описали в вашей модели), а создаете один Photo и пытаетесь воткнуть в него несколько файлов картинок

    Чтобы все работало так как вы хотите вам нужно
    1) В форме иметь просто одно поле с картинками, не забудьте его разрешить для strong parameters
    = form_for [:admin, @post], html: { multipart: true } do |f|
        = f.file_field :images, multiple: true


    2) В методе контроллера перебрать массив params[:images] и для каждого изображения создать свой объект Photo и привязать его к родительскому Post
    params[:images].each do |image|
      @post.photos.build(image: image)
    end
    Ответ написан
    1 комментарий
  • Как сделать мультизагрузку изображений с помощью Carrierwave?

    viktorvsk
    @viktorvsk
    patshaughnessy.net/2014/6/16/a-rule-of-thumb-for-s...
    Не сказал бы, что именно по теме, но прочтите. Даже если не поймете, сохраните на будущее
    Ответ написан
    Комментировать