如何解决Rails form_with默认为错误方法
我正在使用Rails6。我有一个定义获取请求的路由:
namespace :admin do
get '/machines/search',to: 'machines#search',as: 'search_machines'
end
然后,我有一个form_with
,将url
设置为route
。加载表单时,为表单生成的HTML包含method="post"
而不是method="get"
,这是我期望的,因为路由是GET请求而不是POST。我可以将method: "get"
参数添加到form_with
中,这样可以解决此问题,但是我不明白为什么Rails最初没有采用正确的方法。
<%= form_with url: admin_search_machines_path() do |i| %>
<%= i.text_field :q,placeholder: "Search",autocomplete: "off",class: "debounce-form-submit form-control" %>
<% end %>
解决方法
如果未指定form_with
,根据documentation POST
的默认设置为method
。这不是100%正确的,因为如果模型保持不变(source),它将切换为PATCH
(通过隐藏域技巧)。
直到今天,代码仍未查看指定method
的路由本身。
不过,我认为您建议的(向后不兼容)自动魔术并不是完全没有。您可能会在rubyonrails forums中对此进行询问,并获得反馈,是否这将是受欢迎的更改。我个人没想到它会检查这条路线。另外,使用post
和get
方法可能具有相同的路线,这将使查找比一见钟情更加复杂。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。