form_with
更新了功能 rails 5.1
及其在rails中创建表单的统一方式它可以用作form_for
或form_with
包含某些选项
:url - 表单提交到的 URL。类似于传递给 url_for 或 link_to 的值。例如,您可以直接使用命名路由。当 :scope 没有 :url 传递时,表单只会提交到当前 URL。
:method - 提交表单时使用的方法,通常是“get”或“post”。如果使用“patch”、“put”、“delete”或其他动词,则会添加一个名为 _method 的隐藏输入来模拟 post 上的动词。
:format - 表单提交到的路由格式。在提交到其他资源类型时很有用,例如 :json。如果通过了 :url 则跳过。
:scope - 输入字段名称前缀的范围,以及提交的参数如何在控制器中分组。
:model - 用于推断 :url 和 :scope 的模型对象,并填写输入字段值。因此,如果标题属性设置为“Ahoy!” 那么标题输入字段的值将是“Ahoy!”。如果模型是新记录,则会生成创建表单,但是,如果是现有记录,则会生成更新表单。通过 :scope 或 :url 覆盖默认值。例如,将 params[:post] 转换为 params[:article]。
:authenticity_token - 在表单中使用的真实性令牌。使用自定义真实性令牌覆盖或传递 false 以完全跳过真实性令牌字段。在提交到可能限制有效字段的支付网关等外部资源时很有用。远程表单可以通过设置 config.action_view.embed_authenticity_token_in_remote_forms = false 来省略嵌入的真实性令牌。这在对表单进行片段缓存时很有帮助。远程表单从元标记中获取真实性令牌,因此嵌入是不必要的,除非您支持没有 JavaScript 的浏览器。
:local - 默认情况下,表单提交是远程且不显眼的 XHR。使用 local: true 禁用远程提交。
:skip_enforcing_utf8 - 默认情况下,会输出一个名为 utf8 的隐藏字段以强制 UTF-8 提交。设置为 true 以跳过该字段。
:builder - 覆盖用于构建表单的对象。
:id - 可选的 HTML id 属性。
:class - 可选的 HTML 类属性。
:data - 可选的 HTML 数据属性。
:html - 表单标签的其他可选 HTML 属性。
例子
<%= form_with(model: @post, url: super_posts_path) %>
<%= form_with(model: @post, scope: :article) %>
<%= form_with(model: @post, format: :json) %>
<%= form_with(model: @post, authenticity_token: false) %>
命名空间路由示例form_with
对于命名空间路由,例如 admin_post_url:
<%= form_with(model: [ :admin, @post ]) do |form| %>
...
<% end %>
与相关资源
例如,如果您的资源定义了关联,您希望在路由设置正确的情况下向文档添加注释:
<%= form_with(model: [ @document, Comment.new ]) do |form| %>
...
<% end %>
欲了解更多信息结帐文档