Я думал, что это будет легко.Определите модуль респондента 'to_grid', включите его для использования в соответствующих местах, дайте jqgrid использовать URL-адреса, например '/client.grid' для взаимодействия, и получите возможность поделиться действием покоя с респондентом html.Я просмотрел несколько драгоценных камней jqGrid, но не увидел ни одной, которая была бы в центре внимания недавно добавленного кода, совместимого с rails 3.1, камня не подключаемого модуля и полного доступа к REST.
Но, очевидно, янедостаточно хорошо понимают респонденты, или это совершенно неуместный выбор стратегии.
jqGrid - это сетка данных на основе JQuery, которая использует JSON для взаимодействия с сервером.Моя стратегия была примерно такой ...
#Gemfile
gem 'kaminari'
gem 'responder'
gem 'inherited_resources'
#config/initializers/mime_types.rb
Mime::Type.register "application/json", :grid
#lib/application_responder.rb
require 'grid_responder'
class ApplicationResponder < ActionController::Responder
include Responders::GridResponder
end
#lib/grid_responder.rb
module Responders
module GridResponder
extend ActiveSupport::Concern
module InstanceMethods
def to_grid
#Only pagination included at this time.
if get? && resource.is_a?(ActiveRecord::Relation)
total = resource.klass.count
page, rows = controller.params[:page], controller.params[:rows]
paginated = resource.page(page).per(rows)
output = { total: (total / rows) + 1,
page: page,
records: total,
rows: resource }
render json: output.to_json
end
end
end
end
end
#app/controllers/application_controller.rb
require "application_responder"
class ApplicationController < ActionController::Base
self.responder = ApplicationResponder
respond_to :html, :json, :grid
end
#app/controllers/client_controller.rb
class ClientController < InheritedResources::Base
end
Но вызов /client.grid сопутствует тому, что шаблон не найден.Я действительно не ожидал, что мне понадобится шаблон.И я начинаю задумываться, стоит ли придерживаться этой стратегии.У меня есть около дюжины моделей, которые мне нужно было бы объединить в сетку, и, кажется, не очень СУХОГО делать одно и то же на 12 разных контроллерах.
Вопрос : стоит ли эта стратегияпреследование или есть более простой или более идиоматичный, чтобы попробовать.
Бонусный вопрос : указатель на рабочий код отдыха / ответчика, который я мог бы прочитать и использовать в качестве модели.
Спасибо!