Rails – 通过选择下拉菜单执行ajax调用

我有一个包含select标签的视图,它不是表单的一部分,只是一个独立的下拉菜单。 单击其中一个选项,我想执行ajax调用

这是选择标记

  

这是一个基本的jquery,我试图通过它来检测变化

  jQuery(function($) { console.log('clicked'); $("#hiring_stage_dropdown").click(function() { var state = $('select#hiring_stage_dropdown :selected').val(); console.log(state); }); }) 

但是当我选择其中一个选项没有任何反应时,我知道ajax代码不存在,但我现在想要的是在选择其中一个选项时在控制台中看到一些东西。

我在这里缺少什么?

这就是选择的样子

  Hiring stage Manager Step 1 Manager Step 2  

从选择下拉列表中选择项目时执行AJAX调用是通过jquery-ujs内置到Rails中的。

首先,确保你的Gemfile中有gem’jquery gem 'jquery-rails' ,并且你的application.js清单文件中有//= require jquery_ujs (默认情况下它们都在那里)。

然后将data-remotedata-urldata-method属性添加到select中。 jquery-url将序列化select的值并发出请求。 您的select_tag代码可能如下所示:

 <%= select_tag( 'application_stage', options_for_select( application.job.hiring_procedure.hiring_procedure_stages.map{ |p| [p.name, p.id] } ), prompt: "Hiring stage", class: 'input-block-level chzn-select hiring_stage_dropdown', id: 'hiring_stage_dropdown', data: { remote: true, url: '/your_path', method: 'get' } ) %> 

选择值后,jquery-ujs将向/your_path?application_stage=:selected_value发出GET请求/your_path?application_stage=:selected_value 。 然后,您可以在js.erb响应中处理此问题。

尝试以下代码,这将有效:使用change事件而不是click

 //jQuery(function($) { $("#hiring_stage_dropdown").on("change",function() { var state = $(this).val(); alert(state); }); // })