【问题标题】:How to auto-submit Rails formhelper, when onchange occurs on select dropdown (populated from DB)如何在选择下拉菜单上发生 onchange 时自动提交 Rails formhelper(从 DB 填充)
【发布时间】:2013-07-15 20:16:51
【问题描述】:

我的视图中有一个带有两个下拉列表的表单,它们都是从数据库表中填充的,我想在任一下拉列表上发生 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()") %>

非常感谢任何建议!

【问题讨论】:

    标签: ruby-on-rails formhelper


    【解决方案1】:

    查看文档: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()")
    

    【讨论】:

    • 谢谢,但它不喜欢'nil'(我在 Rails 4 中)。我在该行代码中得到:“Products#home 中的 NoMethodError。nil:NilClass 的未定义方法‘删除’”
    • 好的。我修复了不包含零的答案。我希望这样是正确的。
    • 我认为这就是我所拥有的。没有错误,但它不会在更改时自动提交。必须点击提交按钮。
    • 然后启动你的 chrome 或任何你有的浏览器,看看生成的 HTML 是正确的。你也可以尝试一个更简单的事件,比如alert("hello"),看看它是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2023-04-05
    相关资源
    最近更新 更多