我有一个与gem pg_search相关联的form_tag表单,它与form_tag一起工作,如下所示,目前没有使用纯html的ajax,但是当我试图让它以同样的方式与form_for一起工作时,提交没有通过。你知道为什么吗?顺便说一下,你知道在form_tag中form_for中注释的助手"url: search_path“的等价物是什么吗?谢谢
1. Le form_tag
<%= form_tag new_product_association_path, method: :get do %>
<%= text_field_tag :query, params[:query], id: "text_field", class: "form-control", placeholder: "Find a product" %>
<%= submit_tag "Search", class: "btn btn-primary", id: "submit-search"%>
<% end %>
2. le form_for
<%= form_for product_associations_url, as: :get do |f| %>
<%= f.text_field params[:query], id: "text_field" %>
<%= f.submit "Search", class: "btn btn-primary", id: "submit-search" %>
<% end %>
发布于 2019-10-04 20:42:40
Rails提供了几种为表单创建HTML的方法。
这将以最原始的形式生成
form_tag
:。您指定了各种属性,生成的表单不使用Rails magic.form_for
:。这是Rails创建与资源关联的表单的方式,例如:产品。您必须传入要创建/更新的对象。因此,您编写form_for
的方式是不正确的。另一个问题(拼写错误)是,您应该使用method
.而不是as
来指定方法
form_for
的基本用法
在控制器中:
@product = Product.new
在视图中:
<%= form_for @product do |f| %>
...
<% end %>
发布于 2019-10-04 20:57:39
问题可能是form_for
帮助器希望记录作为其第一个参数,而不是URL。我建议改用form_with
,它也允许使用URL。
此外,text_field
的使用也是无效的。您仍然应该提供输入字段的名称(:query
)。
<%= form_with url: product_associations_url, as: :get do |f| %>
<%= f.text_field :query, value: params[:query], id: "text_field" %>
...
<% end %>
示例用法也可以在整个Action View Form Helpers guide中找到。
https://stackoverflow.com/questions/58234455
复制相似问题