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-remote
, data-url
和data-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); }); // })
- Rails remote => true confusion(没有format.js?)
- ActionController :: UnknownFormat with format.js for ajax implementation(Rail 4)
- Rails设计多态 – 使用Ajax渲染部分渲染
- 在ruby on rails上使用jQueryvalidation提交按钮不起作用
- Rails:从另一个控制器渲染一个.js.erb?
- 使用HTTP put时,Rails会话为空
- 如何在网页中动态显示ping输出?
- AJAX请求从每个页面命中服务器,我找不到原始AJAX调用的来源
- 如何将params传递给Rails控制器方法然后使用JQuery / AJAX返回值?