首页 > 解决方案 > 在设计/注册控制器上使用 Select2 和 Ajax

问题描述

我有一个注册控制器,有一个用户/编辑页面,用户可以在注册时更新他/她的个人资料。用户可以在多个下拉菜单中进行选择。它的一个下拉菜单有 9000 多个选项,我想使用 AJAX 调用它们,而不是使用普通的 select2 方法加载整个表。

我有一个修改后的注册控制器,具有以下内容:

class RegistrationsController < Devise::RegistrationsController
  protected


  def edit
    @entreprises = Entreprise.all
    respond_to do|format|
      format.json{
        render :json => @entreprises
      }
    end
  end

...

在我的 users.edit.html 中,我有一个简单的表格:

<%= f.hidden_field :company, :class =>"select2", :id => "ajax-example"%>

在 javascript 标签中,我有:

<SCRIPT>
    $(document).ready(function() {
        $('#ajax-example').select2({
            ajax: {
                url: "/edit.json",
                dataType: "json",
                results: function(data, page) {
                    return {
                        results: $.map( data, function(entreprise, i) {
                            return { id: entreprise.id, text: entreprise.company_name }
                        } )
                    }
                }
            }
        });
    });
<SCRIPT>

我的路线是:

   devise_for :users, controllers: {registrations: "registrations", confirmations: "confirmations", omniauth_callbacks: "omniauth_callbacks"}, skip: :omniauth_callbacks

但是当我重新加载页面时,它显示一个空的 select2 字段。我的工作基于以下示例:

http://rails-select2-example.herokuapp.com/

有谁知道我做得不好,我应该怎么做才能将信息从企业模型填充到注册页面。

谢谢

标签: ruby-on-rails

解决方案


推荐阅读