Rails select_tag onchange ajax请求

我试图创建一个表单,在选择某些元素后向表单添加元素。 例如,在用户选择国家/地区后,我希望有一个ajax调用,其中找到与该国家/地区关联的所有区域/州,然后将其插入到表单中的select元素中。 然后,一旦用户选择区域/状态,将发生相同的过程,并且将另一个元素添加到表单中以响应所选值。 作为旁注,我想以不引人注目的方式做到这一点。到目前为止,我认为这是:

'get', :class => 'form-horizontal', :id => 'find_by_country_form') do %>   "Country" %>  

然后在该视图的javascript文件中,我在选择国家时处理ajax调用:

 $('#country_selection').change(function(){ $.ajax({ url: "find/country_selection", type: "GET", data: {'country=' + $('#country_selection option:selected').value() }, }) }); 

然后,在我的控制器里面,上面的url:路由到我:

 def country_selection @country = Country.find(params[:country]) @regions = @country.regions respond_to do |format| format.js { } end end 

最后,在我的country_selection.js.erb文件中,我有:

 $('#country_selection').after(' "State/Region" %>'); 

我没有得到这个工作。 我甚至不确定我是以正确的方式做到这一点。 当我点击选择并更改选项时,页面上的任何内容都不会更改。

我的代码基本上没问题,但’.change’事件没有得到认可。 我将其更改为’.live(’change’,function(){…})’并且它工作得很好。

这不是我见过的最整洁的代码,但我从根本上看它没有任何问题。

我会在那里发出一些警报,这样你就可以缩小问题所在。 您可以在更改function中放置一个以确保它被击中,您可以在country_selection.js.erb中添加一个以确保它被击中。 这会有所帮助。

我还会更改country_selection.js.erb以在div容器中呈现部分内容,您希望将新的select放入其中,这样您就可以将该代码放入部分内容中,它会更整洁一些。 您只需将参数传递给将成为所选国家/地区的部分即可。