Rails 5引入了新的表单帮助方法form_with
。
它与form_for
有何不同,何时更适合使用?
答案 0 :(得分:10)
这实际上是为rails 5.1做准备,其中只应使用form_with
。它意味着替代两种方法form_for
和form_tag
。
Rails中的
form_for
和form_tag
非常相似,都允许您创建表单标记,但第一个使用模型的属性来构建创建或更新表单,而第二个只是创建一个HTML表单标记,传递的URL为操作。
答案 1 :(得分:0)
form_with
是新来的孩子。现在,其他助手(form_for
和form_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_tag
和form_for
已被弃用,以后将由form_with
取代。