2 декабря 2018 г.
TLDR — нам нужна переменная экземпляра, потому что form_for
без нее работать не будет.
Прошли последние недели. Во Flatiron мы перешли от изучения Ruby к созданию интерфейсов командной строки, к Sinatra, а теперь и к Rails.
Момент «ага».
Эта статья о моем любимом моменте этой недели: когда я наконец понял, зачем нам нужно использовать переменную экземпляра inform_for
. Ниже приведен пример использования form_for
и collection_select
для создания новой формы сотрудника:
Что происходит в этом примере?
form_for
: это наш помощник представления.@employee
: см. раздел ниже.*f.
: метод form_for возвращает объект построителя формы (переменная f).collection_select
: это предварительный -определенный метод построения формы rails, вызываемый для f.dog_id
: сохранить ввод пользователя (независимо от того, что он есть) в params[:id].@dogs
: это фактически редактируемый объект.< br /> :id
: сохранить идентификатор любой собаки, которую выберет пользователь.:name
: показать пользователю имена собак в раскрывающемся меню.
@employee
В нашем примере выше новая форма начинается пустой. Затем пользователь заполняет форму и нажимает кнопку «Отправить».
Найдите минутку, чтобы подумать о том, что произойдет дальше в жизненном цикле формы. Какие данные публикуются? Откуда это? Как им манипулирует наш контроллер?
Пояснение
Тег form_for
не волшебный. Он отображает html в браузере. Html form
Теги формы Html имеют атрибуты действия и метода, которые указывают, какой маршрут выбрать дальше и что делать с данными, введенными в форму.
Здесь form_for собирает данные, введенные в форму, и сохраняет их в переменной экземпляра @employee. Затем rails передает эти данные следующему маршруту (редактированию) в качестве параметров.
Поскольку form_for собирает данные в переменной экземпляра, наши параметры можно легко уничтожить на странице редактирования и использовать для публикации нового сотрудника в базе данных.
Вот ссылка на оригинальный пост в моем блоге: https://edezekiel.com/blogs/12_02_2018.html