2013-01-22 12 views
10

Czytam książkę Rails i do tej pory używałem form_for do tworzenia formularzy. W nowym rozdziale, w którym tworzy się strona logowania dla użytkowników, zamiast tego używa się form_tag. Więc chciałem wiedzieć, kiedy i jak powinniśmy wiedzieć, którego użyć? Czy to jest tylko edukacyjna rzecz, którą zrobił, aby pokazać to również form_tag? lub są inne powody techniczne, które należy wziąć pod uwagę?form_for i form_tag, kiedy użyć?

Odpowiedz

18

form_tag po prostu tworzy formularz. form_for tworzy formularz dla obiektu modelu. Nie można ich stosować zamiennie i powinieneś używać tego, który jest odpowiedni dla danego przypadku.

jest nieco łatwiejszy w użyciu do tworzenia formularzy dla obiektu modelu, ponieważ określa, jakiego adresu URL używać i jakiej metody http użyć w zależności od tego, czy obiekt jest nowym rekordem, czy zapisanym rekordem.

14

W większości przypadków podczas wysyłania danych do bazy danych za pomocą modelu, w metodach takich jak create, update, destroy. Do tego typu akcji można użyć form_for.

Zamiast form_tag tworzyć tylko po prostu form html, na przykład wyszukiwanie:

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

mi się podoba, ponieważ przykład wskazuje na fakt, że 'form_tag' jest często używany przez„szukaj”funkcjonalności, jak zazwyczaj nie jest to idealnie odwzorowane na działanie kontrolera # – mmcrae

+2

Dodam, że form_tag jest dobry do tworzenia formularzy opartych na sesjach. i jak mówisz, podczas interakcji z bazą danych - form_for jest drogą do zrobienia. – BKSpurgeon