Задать вопрос
Ответы пользователя по тегу Ruby on Rails
  • Как отфильтровать массив?

    ZloyHobbit
    @ZloyHobbit
    У вас в коде очень много, не то чтобы ошибок, но вещей, которые в ruby делать не рекоммендуется. Очень советую почитать rails guide, книгу Мацумото по руби и "Гибкая разработка веб-приложений в среде Rails".
    К примеру:
    @ - префикс для instance переменной, она здесь совсем не нужна.
    if not - в ruby есть операторы not, and, or и.т.д. но у них приоритет выполнения существенно ниже, чем у аналогов !, && и || так что лучше использовать символы, что бы не прострелить себе ногу.
    camel_case используется для названия классов и модулей, и тем более не в js стайле с маленькой буквы, пишите красивый код, что бы не мучиться потом.
    и замечаний еще много много можно высказать по синтаксису, так что очень рекомендую его подтянуть.
    Ответ написан
    Комментировать
  • Как обработать такую форму?

    ZloyHobbit
    @ZloyHobbit
    Какое-то запутанное объяснение получается. Лучше приведите пример кода.
    Из того, что я понял, вы хотите при создании обыъекта одной модели создавать объект другой, который с первой никак напрмяую не связан. Это архитекрутно не слишком удобно и не слишком тривиально. Лучше бы попробовать как-то преобразовать архитекрутуру.
    Что бы использовать один и тот же метод при создании и обнволении можно делать так:
    group = Group.find_or_initialize_by(params)
    Что бы создавать объект модели сразу со связанными моделями, полезно использовать nested attributes.
    В вашем случае это будет что-то вроде:
    class Trainig < ActiveRecord::Base
      has_many :exercises
      accepts_nested_attributes_for :exercises
    end
    ...
    training = Training.create(training_params.merge(exercises_atrributes: array_with_hashes_of_exercises_atrributes))

    Причем в массив параметров для упражнений можно внести данные для создания групп и создавать группу при ее отсутсвии перед созданием упраженения при помощи find_or_initialize_by.

    PS. Как правильно сказали в комментариях, для того что бы предевать nested attributes из общей формы удобно использовать fields_for.
    Ответ написан
    1 комментарий