【问题标题】:filter select field using previous field in rails使用rails中的前一个字段过滤选择字段
【发布时间】:2017-10-13 22:19:33
【问题描述】:

我有一家属于某个行业的示范公司。

当会员注册时,我想按行业过滤公司名称。因此,当用户选择行业时,下一个字段仅显示属于该行业的公司名称。

在我的表格上:

<%= f.collection_select( Industry.all, :id, :name) %>
<%= f.collection_select(:industry_id, Company.all, :id, :name) %>

它为我提供了所有行业和公司的选择,但是如何过滤公司名称以在选择行业时更改?

【问题讨论】:

  • 你尝试了什么?

标签: javascript ruby-on-rails


【解决方案1】:

使用 ajax 的简单方法。我可以告诉你路径

1- 在更改行业名称时,您需要向控制器发送 ajax 调用。 前 -

  $('#industry_select_box_id').on('change', function(){
    var industry_id = $('#industry_select_box_id :selected').val();
    $.ajax({
      url: "/get_company_lists_url",
      type: "GET",
      data : {
        id: industry_id
      },
      dataType: "script",
    });
  })

2- 对控制器执行操作(前 company_lists)以从此 ajax 调用中获取公司列表。并在 ajax 调用中用这个 acrion 的 url 替换 /get_company_lists_url。并通过您的params[industry_id] 获取@comapany_lists

3- 做一个像_companies_lists.html.erb 的部分 并使用与您在f.collection_select(:industry_id, Company.all, :id, :name) 中使用的名称相同的名称创建一个select_tag,您可以通过浏览器中的inspect 元素获取名称。并且在部分(假设您的下一个选择框名称类似于 - comapny[industry_id])

<%= select_tag "comapny[industry_id]", options_from_collection_for_select(@comapany_lists, :id, :name) %>

注意-这里你的 @comapany_lists 是你从 ajax 调用中得到的变量

4- in js.erb (ex- company_lists.erb)

$('#your_company_lists_div_id').html("j render 'companies_lists'");

注意这里your_company_lists_div_id是div的id,你想在其中显示你选择的与行业相关的公司列表

summary- 只需使用 ajax 调用更改您的行业并使用选定的公司列表呈现部分。 希望这对你有用,谢谢,如果有任何问题,你可以在评论中提问。

【讨论】:

  • 对不起,伙计。几天来我一直在努力理解你所说的一切,但我仍然对其中的大部分内容感到困惑。你能把 3 解释清楚一点吗?
  • 你有没有试过在选择框的on change事件上调用ajax请求,很简单,我在这里解释的是你必须发送一个行业ID来更改选择框ajax 并在另一个选择框中呈现与该行业相关的公司列表。而已。试试吧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2019-04-29
相关资源
最近更新 更多