Rails 5:form_for vs form_with

Raj*_*hra 6 actionview ruby-on-rails-5

Rails 5引入了新的表单辅助方法form_with.

form_for是如何不同的,何时更适合使用?

Kev*_*own 14

这实际上是为只form_with应使用的rails 5.1做准备.它的意思是作为两种方法的替代form_forform_tag.

form_for并且form_tag在Rails中非常相似,它们都允许您创建表单标记,但第一个使用模型的属性来构建创建或更新表单,而第二个只是创建一个HTML表单标记,并将传递的URL作为操作.


BKS*_*eon 7

使用 form_with(因为它是最新的)

form_with是街区的新来的孩子。form_forform_tag现在(基本上)已经过时了。

为什么会有变化?

原因包含在Kasper Timm Hansen 的拉取请求中 - 我不能说它比拉取请求本身已经说明的更好(请参阅拉取请求的链接)。

拉取请求的直接引用:

form_tag 和 form_for 服务于非常相似的用例。这个 PR 统一了这种用法,例如 form_with 可以只输出类似于 form_tag 的打开表单标签,并且可以只使用 url。

这意味着如果您没有模型,则不需要使用 form_tag。您可以使用form_with帮助程序,它仍然可以处理 URL。

form_with 默认情况下不会将类或 id 附加到表单。

旧的辅助方法 (form_for) 指示您要添加到 html 的 id 和类。 form_with不做这样的假设。当然,这意味着您需要做更多的工作来添加您想要的 id 和类,但这也让您拥有完全的控制权。