gpt4 book ai didi

jquery - 在rails中使用ajax动态更新选择标签

转载 作者:行者123 更新时间:2023-12-03 22:03:58 27 4
gpt4 key购买 nike

我的 View 中有两个下拉列表,我正在尝试根据第一个下拉列表中选定的值更新第二个下拉列表选项。

我知道有关此主题的 Railscast,但我不想使用分组集合;其原因主要是用户可以从一个下拉列表或另一个下拉列表中进行选择,并相应地过滤结果,第二个下拉列表在选择第一个下拉列表中的值时过滤其选项。

我的问题是,如何从 js.erb 文件重新填充 select_tag 选项?

表单

  <%= form_tag("filter", :id => "filter_form", :method => "post") do %>
<label for="company_id" class="company">Company</label><%= select_tag(:company_id, options_from_collection_for_select(Company.all.order(:name), :id, :name), :prompt => "All Companies") %>
<label for="product_id" class="product">Product</label><%= select_tag(:product_id, options_from_collection_for_select(Product.all.order(:name), :id, :name), :prompt => "All Products") %>
<% end %>

js.coffee

  $('#company_id').change( ->
sendFilterForm()
)

sendFilterForm = ->
$.get($('#filter_form').attr('action'), $('#filter_form').serialize(), 'script')

Controller

@filterProducts = true
@products = Product.where(company_id: params[:company_id]).order(:name)

js.erb

<% if @filterProducts  %>
$('#product_id').html(<%= options_from_collection_for_select(@products, :id, :name) %>);
<% end %>

所以最后一部分显然是完全错误的,但这就是我想要做的概念。实现这一目标的正确方法是什么?如果需要的话,我愿意重新处理这个问题,如果有任何帮助,我们将不胜感激。

最佳答案

添加escape_javascript以转义由options_from_collection_for_select生成的返回符、单引号和双引号。

除了添加对 escape_javascript 的调用之外,我没有发现任何其他问题。请在您的 js.erb 中尝试以下操作:

<% if @filterProducts  %>
$('#product_id').html("<%= escape_javascript options_from_collection_for_select(@products, :id, :name) %>");
<% end %>

关于jquery - 在rails中使用ajax动态更新选择标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574462/

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