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

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...