首页 > 解决方案 > 使用 GET 请求提交的 Rails 表单未在 URL 中放置查询字符串参数

问题描述

从 RailsGuides Action View Form Helpers 文章中工作,在“1.1 A Generic Search Form”部分,使用以下代码:

<% form_tag(search_path, :method => "get") do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>

提交此表单时,生成的 URL 是“/search”,而不是预期的“/search?q=searchterm”。

RailsGuides 文章甚至继续说,

使用“GET”作为搜索表单的方法。这允许用户为特定搜索添加书签并返回。更一般地,Rails 鼓励您使用正确的 HTTP 动词来执行操作。

但是,如果 URL 中不包含查询字符串参数,则不可能为特定搜索添加书签。为什么会发生这种情况,对此可以做些什么?

标签: ruby-on-rails

解决方案


尝试

`<%= form_with url: search_path, method: :get do |f| %>
  <%= f.label :q, "Search for: " %>
  <%= f.text_field :q %>
  <%= f.submit :Submit%>
 <% end %>`

form_with 是带有 rails 6 的更新 rails helper


推荐阅读