ruby-on-rails – Rails select_tag onchange ajax请求

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails select_tag onchange ajax请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图制作一个表单,在选择某些元素后,向表单添加元素.例如,在用户选择一个国家/地区后,我想要一个ajax调用,其中找到与该国家相关联的所有区域/状态,然后将其插入到表单中的select元素中.然后,一旦用户选择区域/状态,将发生相同的过程,并且另一个元素将被添加到窗体中以响应于所选择的值.作为一个旁观者,我想做的这一切都不明智.至于我在这个观点:
<%= form_tag(find_school_path,:method=>'get',:class => 'form-horizontal',:id => 'find_by_country_form') do %>

    <%= label_tag :country_selection,"Country" %>
    <%= select_tag :country_selection,options_from_collection_for_select(@countries,:id,:name),:prompt => "Country" %>

<% end %>

然后在该视图的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('<%= label_tag :region_selection,"State/Region" %><%= select_tag :region_selection,options_from_collection_for_select(@regions,:prompt => "State/Region" %>');

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

我的代码基本上是罚款,但’.change’事件没有得到承认.我把它改为’.live(‘change’,function(){…})’,它的工作很好.

解决方法

我看过的并不是最简单的代码,但从根本上看,我没有任何错误.

我会在那里发出一些警报,所以你可以缩小问题的位置.您可以将其中一个放在更改功能中,以确保该命令正在被击中,您可以在country_selection.js.erb中添加一个,以确保该命中.这将有所帮助.

我也会更改country_selection.js.erb,以便在需要新选择的div容器中渲染一个部分,这样就可以将该代码放在一个部分中,并且将会更加细腻.您可以将参数传递给所选国家/地区的部分.

猜你在找的Ruby相关文章