Rails 5:form_for vs form_with

时间:2017-05-09 11:46:49

标签: ruby-on-rails-5 actionview

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

它与form_for有何不同,何时更适合使用?

3 个答案:

答案 0 :(得分:10)

这实际上是为rails 5.1做准备,其中只应使用form_with。它意味着替代两种方法form_forform_tag

  Rails中的

form_forform_tag非常相似,都允许您创建表单标记,但第一个使用模型的属性来构建创建或更新表单,而第二个只是创建一个HTML表单标记,传递的URL为操作。

答案 1 :(得分:0)

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

form_with是新来的孩子。现在,其他助手(form_forform_tag)已基本废弃。您不需要使用后面的助手。从现在开始只需使用form_with

为什么要进行更改?

原因Kasper Timm Hansen's包含在拉取请求中-我不能说比pull request itself中已经提到的要好(请参见拉取请求的链接)。

拉取请求中的直接引号:

  

form_tag和form_for服务于非常相似的用例。这个   PR统一了用法,因此form_with只能输出   开头的表单标签类似于form_tag,可以与   一个网址,例如。

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

  

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

旧的帮助器方法(form_for)指示您要添加到HTML中的ID和类。 form_with不做这样的假设。当然,这意味着您将需要做更多的工作来添加所需的id和类,但这也使您可以完全控制。

答案 2 :(得分:0)

现有答案很好。我还发现有帮助的是前几段here。基本上:

form_tagform_for已被弃用,以后将由form_with取代。