首页 > 解决方案 > 插入后刷新 wice 网格

问题描述

我正在尝试在不重新加载浏览器的情况下添加新的提供程序,但我做错了。我有一个 index.html.erb 用于显示所有具有 wice 网格 gem 的提供程序和一个隐藏表单,用于在顶部插入新的提供程序以通过“remote:true”启用来做到这一点。

提交表单时,调用 providers_controller 上的 create 方法,然后将信息发送回 _create.js.erb 以刷新网格。

我知道 javascript 正在执行但没有刷新网格。

任何想法?

index.html.erb

<script>
 function newProviderJS(str)
 {
  if(str==true)
  {
    jQuery('div#newProvider').show();
    jQuery('div#nuevoProveedor').hide();
    document.getElementById("check").checked = false;
  }
  else
  {
    jQuery('div#newProvider').hide();
    jQuery('div#nuevoProveedor').show();
    document.getElementById("check").checked = true;
 }
}

 <div class="box">
  <div class="box-header">    
    <h3 class="box-title">Listado de Proveedores</h3>

  </div>
  <div class="box-body">
    <%= render 'newHideForm' %>
    <input type="checkbox" name="check" id="check" autocomplete="off" checked style="display: none ;"/>
    <div id="nuevoProveedor" style="display: visible ;">
      <input type="button" id="nuevoProveedor" value="Nuevo" onclick="newProviderJS(check.checked);"/>
    </div>
    <%= render partial: 'grid'%>    
  </div>
 </div>

_grid.html.erb

<%= grid(@gridProvider, allow_showing_all_records:  false, show_filters: :when_filtered, html: {class: 'table table-hover'}) do |g|
    g.action_column html_check_box: false
    g.column name: 'ID', attribute: 'id'
    g.column name: 'Nombre', attribute: 'nombre' do |p|
  link_to(p.nombre, provider_path(p))
    end
    g.column name: 'NIF', attribute: 'nif' do |p|
      p.nif
    end
    g.column name: 'Direccion', attribute: 'direccion' do |p|
      p.direccion
    end
    g.column name: 'Codigo Postal', attribute: 'codigoPostal' do |p|
      p.codigoPostal
    end
    g.column name: 'Telefono', attribute: 'telefono' do |p|
      p.telefono
    end
    g.column name: 'Email', attribute: 'email' do |p|
      p.email
    end
    g.column name: 'Página web', attribute: 'webpage' do |p|
      p.webpage
    end
    g.column do |provider|
      link_to 'Eliminar', provider_path(provider),
        method: :delete,
        data: { confirm: '¿Estas seguro que quieres eliminar?' }
    end
end%>

创建.js.erb

$("#gridProvider").html("<%= escape_javascript(render partial: 'grid') %>"); 

在 providers_controller.rb 上创建函数

def create
    @provider = Provider.new(provider_params)      

  respond_to do |format|
    if @provider.save
      @gridProvider = initialize_grid(Provider, order: 'nombre', name: 'gridProvider')
      format.html { redirect_to @provider, notice: 'Proveedor se ha creado correctamente' }
      format.js   { }
      format.json { render :show, status: :created, location: @provider }
    else
      format.html { render :new }
      format.json { render json: @provider.errors, status: :unprocessable_entity }
    end
  end
end

标签: ruby-on-railswice-grid

解决方案


推荐阅读