Сложные формы Ruby on Rails

#javascript #jquery #ruby-on-rails #forms #nested-forms

#javascript #jquery #ruby-on-rails #формы #вложенные формы

Вопрос:

Я разрабатываю систему управления контентом для нужд моего клиента, и я застрял. Мне нужно создать систему для управления продуктами и их ценами. Проект предназначен для туристического агентства, поэтому каждая «цена продукта» имеет сезоны, и для каждого сезона существует категория продукта. Каждая категория товаров имеет свои цены. Например:

Я «создаю» отель (продукт). Я также должен создать «ценовые периоды» (низкий сезон, середина сезона и т. Д.). В каждом ценовом периоде я создаю ценовую категорию (например, «Gold Club Rooms») и в каждой категории я создаю цену номера (например, «Двухместный люкс — 100 $»). price_periods, price_groups и prices — это все модели, связанные с продуктом. Моя проблема в том, что я должен создать все это в одной форме. Я придумал способ, но он довольно сложный, и мне пока не удалось заставить его работать должным образом…

В нескольких словах, я создал двухэтапную отправку. Один для продукта и price_periods, а второй шаг для price_category и price (в тройной вложенной форме). Я ищу более чистый способ построить это, поэтому я прошу о помощи. Есть ли шаблон проектирования, которому я должен следовать? Или книга или справочник?

Пожалуйста, помогите 🙂 Извините, если это «Не по теме», но я действительно застрял и был бы признателен за любую помощь. Заранее спасибо.

мои модели:

Продукт

 class Product < ActiveRecord::Base

  # Concerns 
  include Translatable
  translates :title, :description, :address

  # Validations
  validates_presence_of :address_lat, :address_lon

  # Associations

  has_and_belongs_to_many :product_categories
  has_many :product_translations
  has_many :prices
  has_many :price_periods
  has_many :price_groups
  belongs_to :location
  accepts_nested_attributes_for :product_translations
  accepts_nested_attributes_for :prices
  accepts_nested_attributes_for :price_periods
  accepts_nested_attributes_for :price_groups
end
 

Период цены

 class PricePeriod < ActiveRecord::Base
  # Associations
  has_many :prices
  belongs_to :product
end
 

Ценовая группа

 class PriceGroup < ActiveRecord::Base
  # Associations
  has_many :prices
  belongs_to :product
end
 

Цена

 class Price < ActiveRecord::Base

  # Associations
  belongs_to :product
  belongs_to :price_group
  belongs_to :price_period
end
 

Комментарии:

1. Не могли бы вы опубликовать свои миграции и модели?

2. Я думаю, вам нужно что-то вроде angular / ember / backbone для чистого способа создания пользовательского интерфейса, подобного вашему. Я предпочитаю angular. Но выбор за вами.

3. Я добавил свои модели. В прошлом я использовал angular, но стараюсь этого избегать. В этом проекте я использовал чистый jquery вместе с некоторыми плагинами. Для этого мне в основном нужен шаблон архитектуры. Я все же попробую angular, на всякий случай 🙂 Спасибо. Любое другое предложение для шаблона архитектуры / дизайна.