微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/jquery/176635.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐