如何使用集合 select 作为 Rails 中的按钮?

How to use collection select as a button in Rails?

在我的表单中,我有一个 collection_select 可以 select 文章的名称,我的问题是当我 select 任何文章没有任何反应时

 <%= form_with url: articles_path do |f| %>
   <%= collection_select(:article, :article_id, @articles, :id, :name ) %>
 <% end %>

当然我会错过提交按钮,但我希​​望用户只需 select 文章名称并将数据传递给控制器​​(不必在 [=21= 下面放置按钮])

我找不到路,如果有人知道并能指导我,我将不胜感激

感谢您花时间阅读我。

假设您的表单有类似 HTML 的内容

<form action="/some_path" method="post">
  <select name="article_id" id="article_id">
    <option value="1">1</option>
    <option value="2">2</option>
  </select>
</form>

你应该放下面的 JS(前提是你不使用任何 JS 库,例如 jquery

const select = document.getElementById('article_id')
select.addEventListener('change', (event) => {
  const XHR = new XMLHttpRequest()
  const form = event.target.parentElement

  XHR.open(form.getAttribute('method'), form.getAttribute('action'))
  XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
  XHR.send("article_id=" + encodeURIComponent(event.target.value)
})

您可能还想在 XHR 上为 errorload 添加一个事件侦听器,以根据您的请求是否成功进行一些处理