ruby-on-rails - 插入后刷新 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
解决方案
推荐阅读
- json - 在 Openresty 中使用 cjson Lua 模块解析缺少字段的 JSON
- coq - 如何证明一个奇数是coq中nat的double的后继?
- javascript - 自动放大图像的某个位置
- reactjs - 出口类与声明类反应的区别
- firebase - 为新用户创建试用帐户以使用 Firebase 测试 Web 应用构建:我应该如何计算试用期?
- c++ - 使用 new 实例化的结构上的未初始化内存警告
- haskell - 学习 Haskell:制作一个返回只出现一次的元素列表的函数
- mysql - 你如何从 docker 中连接到 mysql 服务器?
- api - 在 Vue 中挂载时,Axios 数据不会被转移到数据中
- nginx - 使用 nginx 服务两个 React 项目的问题