form_for
предпочитает в качестве первого аргумента объект activerecord; это позволяет легко создавать или редактировать форму (чтобы использовать ее в «новом» представлении, вы должны создать пустой экземпляр в контроллере, например:
def new
@foo = Foo.new
end
Он также передает переменную формы в блок, чтобы вам не приходилось повторять имя модели внутри самой формы. это предпочтительный способ написать форму, связанную с моделью.
form_tag
просто создает тег формы (и, конечно, молча подготавливает скрытое поле, защищающее от подделки, например form_for
); лучше всего его использовать для немодельных форм (на самом деле я использую его только для простых форм поиска и т. п.)
Аналогично, form_remote_for
и form_remote_tag
подходят для связанных с моделью форм и не связанных с моделью форм соответственно, но вместо окончания стандартного метода http (GET, POST ...) они вызывают ajax способ.
Все это и многое другое доступно для вас на справочных страницах FormHelper и PrototypeHelper .
РЕДАКТИРОВАТЬ 2012-07-13
Prototype
был удален из rails
давно, и удаленные формы полностью изменились. Пожалуйста, обратитесь к первой ссылке, в отношении опции :remote
для form_for
и form_tag
.