jquery – 使用rails中的ajax动态更新选择标签

前端之家收集整理的这篇文章主要介绍了jquery – 使用rails中的ajax动态更新选择标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个视图中有两个下拉列表,我正在尝试根据第一个下拉列表中选择的值更新第二个下拉列表选项.

我知道铁路公司这个话题,但我不想使用分组的集合;原因主要是用户可以从一个下拉菜单中选择另一个,并且相应地对结果进行过滤,第二个下拉菜单仅在选择了第一个下拉菜单中的值时对其选项进行过滤.

我的问题是,如何从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),:prompt => "All Products") %>
  <% end %>

js.coffee

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

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

调节器

@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,: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,:name) %>");
<% end %>
原文链接:https://www.f2er.com/jquery/176635.html

猜你在找的jQuery相关文章