Form_for и form_tag, когда использовать какой?

Я читаю книгу Rails и до сих пор использовал form_for для создания форм. В новой главе, что он создает страницу входа для пользователей, вместо этого используется form_tag. Поэтому я хотел знать, когда и как мы должны знать, какой из них использовать? Это просто учебная вещь, которую он сделал, чтобы показать это тоже? или есть больше технических причин, которые следует учитывать?

Ответ 1

form_tag просто создает форму. form_for создает форму для объекта модели. Они не взаимозаменяемы, и вы должны использовать тот, который подходит для данного случая.

form_for немного проще использовать для создания форм для объекта модели, поскольку он определяет, какой url использовать и какой метод http использовать в зависимости от того, является ли объект новой записью или сохраненной записью.

Ответ 2

В большинстве случаев, когда вы отправляете данные в свою базу данных с помощью модели, в таких методах, как create, update, destroy. Для этого типа действия вы можете использовать form_for.

Вместо form_tag создайте просто form html, например, поиск:

 <%= form_tag("/search", :method => "get") do %>
   <%= label_tag(:q, "Search for:") %>
   <%= text_field_tag(:q) %>
   <%= submit_tag("Search") %>
<% end %>