gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:03:16 25 4
gpt4 key购买 nike

我正在尝试制作一个表单,在选择某些元素后将元素添加到表单中。例如,用户选择一个国家/地区后,我希望有一个 ajax 调用,其中找到与该国家/地区关联的所有地区/州,然后将其插入到表单的选择元素中。然后,一旦用户选择了一个地区/州,就会发生相同的过程,并且另一个元素将被添加到表单中以响应所选的值。附带说明一下,我想以不引人注目的方式完成这一切。到目前为止,我的观点是:

<%= 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 %>

然后在该 View 的 javascript 文件中,我在选择国家/地区时处理 ajax 调用:

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

然后,在我的 Controller 内部,上面的 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, :id, :name), :prompt => "State/Region" %>');

我还没有让它发挥作用。我什至不确定我是否以正确的方式这样做。当我点击选择并更改选项时,页面上没有任何变化。

解决方案

我的代码基本上没有问题,但“.change”事件未被识别。我将其更改为 '.live('change', function() {...})' 并且效果很好。

最佳答案

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

我会在那里发出一些警报,以便您可以缩小问题的范围。您可以在更改函数中添加一个以确保它被命中,您可以在country_selection.js.erb 中添加一个以确保它被命中。这会有一点帮助。

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

关于ruby-on-rails - Rails select_tag onchange ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com