В моем коде Rails 5 у меня есть партиал, который загружается при успешном возврате вызова ajax. У этого партиала есть идентификатор div, который предназначен для сетки, загружаемой кодом Ext JS в файл ресурсов. При первой загрузке страницы весь пользовательский интерфейс отображается нормально, включая сетку Ext JS. Но в любое время после этого, когда выполняется вызов ajax, несмотря на частичную загрузку, сетка не загружается. Код внутри Ext.onReady (function () не выполняется до тех пор, пока не будет перезагружена вся страница. Как я могу это изменить?
myapp / app / view / index. html .erb
<div id="test">
<%= render partial: 'my_partial' %>
</div>
<script type="text/javascript">
function someAjax(){
$.ajax({
url: '/mycontroller/my_data',
success: function(result) {
$('#test').html(result);
}
});
}
</script>
myapp / app / view / _my_partial. html .erb
<li>
<span>Some data </span><span><%= @value1 %></span>
</li>
<br>
<div>
<div id="my-js-code"></div>
</div>
myapp / app / assets / javascript / my_grid_code. js .erb
Ext.Loader.setConfig({
enabled: true,
paths: {
'Ext.ux': '/ext/ux'
}
});
Ext.onReady(function(){
if(Ext.get('my-js-code')){
//code that creates a grid
Ext.define('mymodel', {
extend: 'Ext.data.Model',
fields: ['mycol1','mycol2']
});
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'mymodel',
pageSize: 10,
proxy: {
type: 'rest',
format: 'json',
url: '/mycontroller/list',
reader: {
type: 'json',
root: ‘result’,
totalProperty: 'totalCount'
}
}
});
gridColumns = [{
header: ‘My Col1’,
dataIndex: 'my_col1’
},{
header: ‘My Col2’,
dataIndex: 'my_col2’
}];
var grid = Ext.create('Ext.grid.Panel', {
renderTo: 'my-js-code',
store: store,
columns: gridColumns
});
});
myapp / app / controllers / my_controller.rb
def my_data
respond_to do |format|
format.html { render :partial => "my_partial" }
end
end