Rails 5:使用带参数的form_with预填充搜索表单输入,而不必手动对每个字段进行处理

问题描述 投票:0回答:1

假设我们有一个简单的搜索表单,该表单提交了GET请求以进行搜索/过滤:

<%= form_with(scope: :search, url: url_for, local: false, method: :get) do |f| %>
  <%= f.text_field :title %>
<% end %>

当我们将form_with(或旧的form_for)与ActiveRecord对象]一起使用时,所有字段都将自动填充有AR对象属性的当前值。

但是在上面的示例中,如果我们仅使用范围(在我们的示例中为search),那么当我们使用如下所示的URL打开页面时,不会发生这种情况:

http://localhost:3000/blog?search%5title%5D=test

即使URL很难使我们用params[:search]填充rails {title: 'test'},它仍然需要手动为每个字段传递值,例如:

<%= f.text_field :title, value: params.dig(:search, :title) %>

随着搜索表单的增加,这变得非常乏味且容易出错,而且似乎是一个普遍的要求,我不敢相信没有其他类似的方法可以在不依靠Form Objects Design Pattern的情况下进行此操作。

是否有任何自动的方式来预填充这些输入,而不必从参数中手动传递值?

假设我们有一个简单的搜索表单,该表单提交了一个GET请求以进行搜索/过滤:

ruby-on-rails
1个回答
0
投票

我认为您可以在控制器操作中使用参数值创建一个新的搜索对象。然后,form_with / form_for应该预先填写输入字段。也许像这样:

© www.soinside.com 2019 - 2024. All rights reserved.