Привет, ребята. Я новичок в разработке рельсов и ударил немного стены. Приложение, над которым я работаю, является решением для планирования, которое требует обновления модели соединения, но не простым способом 1: 1.
Приложение выложено следующим образом:
class Route < ActiveRecord::Base
has_many :markers, :foreign_key => 'source_id'
has_many :schedules
accepts_nested_attributes_for :markers, :allow_destroy => true, :reject_if => proc { |a| a['name'].blank? }
accepts_nested_attributes_for :schedules, :allow_destroy => true, :reject_if => proc { |a| a['name'].blank? }
end
class Schedule < ActiveRecord::Base
has_many :arrivals
has_many :markers, :through => :arrivals
accepts_nested_attributes_for :arrivals, :allow_destroy => true, :reject_if => :all_blank
end
class Marker < ActiveRecord::Base
has_many :arrivals
has_many :schedules, :through => :arrivals
end
class Arrival < ActiveRecord::Base
belongs_to :marker
belongs_to :schedule
end
... так что основное has_many: через ... или так я бы подумал: P
При создании маршрута вы можете создавать расписания 1..n и маркеры 1..n. Редактирование расписания должно позволить вам добавлять 1..n записи о прибытии для каждого маркера, определенного в маршруте. Это то, что вызывает у меня горе.
Благодаря магии ascii-art я хочу, чтобы приложение выглядело так:
/views/routes/edit.html.erb (works already)
ROUTE
-----
...
SCHEDULES
---------
[Add]
* Schedule 1 [Edit][Delete]
* Schedule 2 [Edit][Delete]
...
MARKERS
-------
[Add]
* Marker 1 [Edit][Delete]
* Marker 2 [Edit][Delete]
* Marker 3 [Edit][Delete]
* Marker 4 [Edit][Delete]
...
/views/schedules/edit.html.erb
SCHEDULE X
----------
[Add Col.]
Marker 1 [ ] [ ]
Marker 2 [ ] [ ]
Marker 3 [ ] [ ]
Marker 4 [ ] [ ]
[x] [x]
(the [x] should remove a column)
РЕДАКТИРОВАТЬ (09 НОЯБРЯ):
Я удалил неполный код вида, который я первоначально разместил, но хотел бы немного обновить вопрос.
Я думаю, что часть путаницы здесь (для меня и, возможно, для любого, кто мог бы помочь) состоит в том, что я не объяснил отношения должным образом.
- маркеров много прибытий
- расписания имеют много маркеров
- маршруты имеют много расписаний
Это основы.
Наличие формы для обновления поступлений для одиночного маркера не составит труда, так как это базовая форма. Я надеюсь предоставить форму для одновременного обновления всех маркеров.
Когда вы нажимаете «Добавить запись», он должен добавить новое прибытие для каждого маркера , который доступен в данный момент. Под каждым «столбцом» должна быть кнопка «Удалить», которая будет удалять каждый приход для этого конкретного столбца (то есть с каждого маркера).
Я не уверен, что это прояснит это: P