Привет, я новичок в Rails, и я изо всех сил пытаюсь создать фильтр, я сделал некоторые поисковые запросы, но я чувствую, что сейчас я в узком месте, действительно нужна какая-то помощь.Динамический выбор и фильтр в Rails 4
макете:
У меня есть модель событий, с заголовком, описанием и т.д., и теперь я хочу, чтобы добавить суд, Дом и тип события в модель. Когда пользователь создает событие, он должен выбрать суд, дом и какой тип события.
Пользователь должен выбрать суд, а затем выбрать дом, поскольку каждое имя дома отличается в каждом дворе.
Предпочтительно выпадающий дом должен появиться только после того, как выбрано значение для суда.
Наиболее важной частью является то, что пользователи могут фильтровать свой поиск в дальнейшем и получать список событий на основе выбранных ими вариантов.
/events?court=foo&house=bar&event_type=fun
И это нормально, если пользователь выбрать только один выбор и щелкнул Найти!
/events?court=foo # show all foo court events
/events?court=foo&event_type=fun # show all fun type events at foo court
Мои вопросы
Из некоторых ответов, которые я видел, что некоторые люди создали отдельные модели для суда, дома и т. д. Нужно ли в этом случае? Я хотел бы, чтобы держать все это в Event.rb, так что я могу сделать
validates :court, :house, :event_type, presence: true
Для View, мы должны были бы JavaScript правильно? Используем ли мы его вместе с методом Event, подобным этому?
def return_house(selected_court)
if selected_court == 'foo'
['bar1', 'bar2', 'bar3']
elsif selected_court == 'baz'
['qux1', 'qux2', 'qux3']
end
end
Я использую f.input для раскрывающегося выбора, но я видел, что люди используют f.collection_select?
Спасибо за помощь, я подумал, используя несколько моделей, но тогда как я могу их фильтровать/искать? Я нашел этот камень https://github.com/plataformatec/has_scope, но кажется, что используют только контроллеры, а не модели. – tmvnty
Этот камень использует модели. Первый пример кода, который они приводят, - это модель. Этот драгоценный камень помогает вашему контроллеру и вашей модели говорить. Я думаю, вам, вероятно, следует попробовать сначала создать более простое приложение, например, блог. – trosborn