Согласно предыдущему Почта, я понимаю, как настроить свои таблицы / модели, чтобы я мог установить отношение "многие ко многим".
Однако я пытаюсь реализовать все это на одной странице с одной формой. (Единственная другая страница, которую увидит пользователь, - это страница подтверждения после того, как они отправили форму, возможно, просто отображая детали того, что они отправили)
Пользователю нужно только иметь возможность обновлять количество любого из доступных блюд. Затем я сделаю резервную копию базы данных в определенный день / время, и это будет заказ каждого пользователя на неделю. Из-за этого я реструктурировал свои таблицы следующим образом ...
Пользователь хранит информацию о пользователе.
user.rb
class User < ApplicationRecord
has_many :mealselections
has_many :meals, through: :mealselections
accepts_nested_attributes_for :mealselections
end
Еда используется для отображения информации о питании для всех пользователей. (название_питания, описание, img_url)
food.rb
class Meal < ApplicationRecord
has_many :mealselections
has_many :users, through: :mealselections
end
Выбор еды - это объединенная таблица, которая ссылается на блюда, выбранные пользователем, а затем к этой таблице добавляется дополнительный целочисленный столбец, который обозначает количество блюд, которые они хотят для каждого выбора блюд.
foodselection.rb
class MealSelection < ApplicationRecord
belongs_to :user
belongs_to :meals
end
Итак, я заблудился, как использовать контроллер, чтобы иметь возможность выполнять функции CRUD из одной формы. Это имело больше смысла, когда у меня была связь один-к-одному, поскольку я просто обновлял столбцы (food1, food2, food3) для связанного пользователя, и каждый столбец food # был создан со значением по умолчанию 0.
Однако теперь из-за того, как работают отношения «многие-ко-многим», я понимаю, что пользователь должен как минимум создавать и обновлять столбцы из одной и той же формы.
Поскольку я показываю это на одной странице (домашней странице), как мне сделать это в соответствующем HomeController с помощью одной формы / запроса?
Вы абсолютно правы, мне стоит сосредоточиться только на MealSelections, поскольку это единственное, что активно меняется. Также полезно знать, что моделирование "многие-ко-многим" на одной странице - это не то, что легко выполнить. Спасибо.





Хотя содержимое http://railscasts.com/episodes/196-nested-model-form-revised немного устарело, оно демонстрирует общую технику, которая включает изменение формы, когда пользователь делает выбор для создания, удаления или изменения полей вложенных моделей с помощью javascript. Этот основной принцип все еще широко используется, поскольку он опирается на логику вложенных атрибутов по умолчанию в контроллере и механизмы массового обновления модели. Возможно, вам придется внести некоторые незначительные изменения, поскольку строгие параметры являются фактором, влияющим на более современные приложения, чем это было обычно во время создания контента. Взгляните на код для рассматриваемой формы и действий контроллера, что также может помочь с более конкретным ответом.
Я попытаюсь использовать упрощенную настройку, как указано в комментарии к моему вопросу, но эта информация полезна, если я чувствую, что мне нужно расширить функциональность в будущем. Спасибо.
Мне кажется, что на самом деле вы хотите, чтобы пользователь сделал на странице добавление / удаление MealSelections для заказа. Очень сложно смоделировать отношения «многие ко многим» с пользователем на плоской странице. Лично я бы набросал, как будет выглядеть страница / какие кнопки есть у пользователя, и использовал бы это, чтобы спланировать, что вы делаете. Истинное моделирование отношения «многие ко многим» на одной странице окажется довольно сложным, но страница для редактирования MealSelections одного заказа должна оказаться довольно простой.