win*_*yer 8 ruby-on-rails ruby-on-rails-5 ruby-on-rails-5.1
在Rails 5.1中,所有表格都必须完成form_with
.在http://edgeguides.rubyonrails.org/5_1_release_notes.html#unification-of-form-for-and-form-tag-into-form-with中,我只能找到与模型相关的表格示例.
在Rails 5.1中使用这个Rails 5.0表单的正确方法是什么form_with
?
<%= form_tag("/search", method: "get") do %>
<%= label_tag(:q, "Search for:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
TeW*_*eWu 15
这是form_with
电话,这完全等同于form_tag
问题的来电:
<%= form_with url: '/search', method: :get, local: true do |f| %>
<%= f.label :q, "Search for:" %>
<%= f.text_field :q, id: :q %>
<%= f.submit "Search" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下form_with
通过XHR(aka remote: true
)发送,您必须添加local: true
以使其行为类似于form_tag
默认值remote: false
.
在rails指南,API文档和此github问题讨论中查看更多相关信息.
form_with
更新功能 rails 5.1
以及在rails中创建表单的统一方式,它可以用作form_for
或form_with
包含某些选项
:url - 表单提交的URL.类似于传递给url_for或link_to的值.例如,您可以直接使用命名路由.当a:scope传递时没有:url,表单只提交到当前URL.
:method - 提交表单时使用的方法,通常是"get"或"post".如果使用"patch","put","delete"或其他动词,则会添加名为_method的隐藏输入来模拟post上的动词.
:format - 表单提交的路由格式.提交到其他资源类型时很有用,例如:json.如果a:url通过则跳过.
:scope - 为输入字段名称添加前缀的范围,以及提交的参数如何在控制器中分组的范围.
:model - 用于推断:url和:scope by的模型对象,再加上输入字段值.因此,如果title属性设置为"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) %>
Run Code Online (Sandbox Code Playgroud)
form_with
对于命名空间路由,例如admin_post_url:
<%= form_with(model: [ :admin, @post ]) do |form| %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
与相关的资源
例如,如果您的资源已定义关联,则您希望在给定路由设置正确的情况下向文档添加注释:
<%= form_with(model: [ @document, Comment.new ]) do |form| %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
了解更多信息结帐文档
归档时间: |
|
查看次数: |
7698 次 |
最近记录: |