5

我的视图中有一个带有两个下拉列表的表单,它们都是从数据库表中填充的,我想在任一下拉列表上发生 onchange 事件时自动提交表单:

<%= form_for @products, url: products_path, method: :get do |f| %>
  <!-- POPULATE DROPDOWNS FROM DB DATA -->
  <%= select('post', 'state', @suppliers.collect {|s| [s.supp_state, s.id]}) %>
  <%= select('post', 'category_id', @categories.collect {|c| [c.cat_name, c.id]}) %>
  <div class='actions inline'><%= f.submit 'GO!' %></div>
<% end %>

我尝试了以下变体,但我对 Ruby/Rails/JS 很陌生。到目前为止还没有运气:

<%= select('post', 'state', @suppliers.collect {|s| [s.supp_state, s.id]}, :onchange => "this.form.submit()") %>

<%= select('post', 'state', @suppliers.collect {|s| [s.supp_state, s.id]}, :input_html => {:onchange => "this.form.submit()") %>

任何意见是极大的赞赏!

4

1 回答 1

14

请参阅文档:http ://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

争论是这样的:

select(object, method, choices, options = {}, html_options = {})

:onchange属于 html 选项,因此您需要将选择框修复为:

select('post', 'state', @suppliers.collect {|s| [s.supp_state, s.id]}, :onchange => "this.form.submit()")
于 2013-07-15T20:32:27.097 回答