2013-07-15 1 views
4

У меня есть форма в моем представлении с двумя выпадающими списками, заполненными из таблиц db, где я бы хотел автоматически отправить форму когда OnChange событие происходит на любом раскрывающемся списке:Как автоматически отправить Rails formhelper, когда 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()") %> 

Любой совет очень ценим!

ответ

11

См документации: 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()") 
+0

Спасибо, но ему не нравится «ноль» (я в Rails 4). Я получаю: «NoMethodError in Products # home. Undefined метод« delete »для nil: NilClass» в этой строке кода – pete

+0

Ok. Я исправил ответ, чтобы не содержать нуль. Надеюсь, это правильно. – DaveTsunami

+0

Я думаю, что это в значительной степени то, что у меня было. Нет ошибок, но он не автоматически отправляется при изменении. Необходимо нажать кнопку «Отправить». – pete