【问题标题】:How to Update a Select2 4.0 Collection Select Options如何更新 Select2 4.0 集合选择选项
【发布时间】:2015-05-30 20:13:13
【问题描述】:

我有一个collection_select 供客户使用,可以选择使用模式添加新客户。我希望 select2 collection_select 使用新客户端进行更新并将值设置为新添加的客户端。

在父表单中,我有:

<%= f.collection_select :client_id, @clients, :id, :name, { label: 'Client', prompt: true, autofocus: true, required_flag: true }, { class: 'form-control js-example-basic-single', autofocus: true } %>
<div class='form-group'>
  <%= link_to 'Add a New Client', '#new_client_modal', 'data-toggle' => 'modal' %>
</div>

在我的客户端控制器中:

@clients = Client.where(account_id: current_account.id)
format.html { redirect_to client_url(@client) }
format.js   { render action: 'show', status: :created, location: @client }

在 show.js.erb 我有:

$('#new_client_modal').modal_success();
$(".js-example-basic-single").val("<%=j @client.id.to_s %>").trigger("change");
<% flash.each do |type, message| %>
  $('#flash_messages').html("<%=j render 'layouts/error' %>")
<% end %>

想法是关闭添加客户端模式,然后使用新的 @clients `选项更新 select2 集合选择。希望是用@clients更新集合选择并将值设置为@client。

请注意,我使用的是 select2 4.0 版。

【问题讨论】:

    标签: javascript jquery ruby-on-rails jquery-select2


    【解决方案1】:

    可能是更好的方法,但这是我最终得到的:

    $(".js-example-basic-client").select2({
      data: [{ id: "<%=j @client.id.to_s %>", text: "<%=j @client.name %>" }],
      theme: "bootstrap"
    });
    $(".js-example-basic-client").val("<%=j @client.id.to_s %>").trigger("change");
    

    data 命令将最近添加的客户端添加到下拉列表中,但位于底部。理想情况下,我必须删除下拉选项,然后添加完整的客户端列表。现在这可以工作,因为将选定的值设置为最近添加的客户端。

    【讨论】:

      猜你喜欢
      • 2016-03-14
      • 2015-11-05
      • 1970-01-01
      • 2015-05-19
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多