Документация гласит:
form_tag(url_for_options = {}, options = {}, &block)
Starts a form tag that points the action to an url configured with url_for_options just
like ActionController::Base#url_for. The method for the form defaults to POST.
Это означает, что form_tag
предназначен для отправки данных непосредственно на другой URL-адрес, обработанный действием контроллера. Действительно, в RailsTutorial форма входа Майкл Хартл использует функцию form_for
вместо form_tag
.
form_for(:session, url: sessions_path)
По сути, идея заключается в том, что вы отправляете данные для обработки контроллером, а не записываете их в базу данных. Поскольку у нас нет модели для пользовательских сессий, мы должны использовать символ :session
вместо @session
и сообщить форме, куда (по какому URL) следует отправлять данные.
Я подозреваю, хотя я не уверен, что это должно работать и с simple_form_for
. Что-то вроде:
<%= simple_form_for(:session, url: sessions_path) do |f| %>
Обновление: Я успешно изменил эталонную реализацию примера приложения, чтобы использовать simple_form_for
для создания новых пользовательских сеансов.
Это, конечно, при условии, что контроллер Sessions обрабатывает ваш логин и что у него есть метод, который отвечает на POST (вероятно, create
). В этом действии контроллера вы должны обрабатывать логин Волшебства.
Вот документация Rails для form_for
, если вам интересно.