0

Railscasts チュートリアル 340 に従って、サーバー側の JSON データから JQuery Datatables コンポーネントを作成しようとしています。チュートリアルへのリンクはhttp://railscasts.com/episodes/340-datatablesです。独自のデータベース テーブルとデータで動作するようにコードをカスタマイズしています。

JSON をデータテーブルに出力するリンクにアクセスしようとすると、次のエラーが発生します。

not opened for reading

リクエストを処理するコントローラーのコードは次のとおりです。

class DatadescriptionController < ApplicationController
layout "datadescription"

def index
respond_to do |format|
      format.html
      format.json { render json: DatasetIndexDatatable.new(view_context) }
    end
  end
end

format.json コマンドでインスタンス化される DatasetIndexDatatable クラスは次のようになります。

class DatasetIndexDatatable
  delegate :params, :h, :link_to, :number_to_currency, to: :@view

  def initialize(view)
    @view = view
  end

  def as_json(options = {})
    {
    sEcho: params[:sEcho].to_i,
    iTotalRecords: Datadescription.count,
    iTotalDisplayRecords: datasets.total_entries,
    aaData: data
    }
 end

 private

def data
 datasets.map do |dataset|
   [
    id,
    database,
    table,
    created_by,
    name
  ]
  end
end

def datasets
  @datasets ||= fetch_datasets
end

def fetch_datasets
  datasets = Datadescription.order("#{sort_column} #{sort_direction}")
  datasets = datasets.page(page).per_page(per_page)
  if params[:sSearch].present?
    datasets = datasets.where("name like :search or created_by like :search", search: "%#  {params[:sSearch]}%")
end
datasets
end

def page
  params[:iDisplayStart].to_i/per_page + 1
end

def per_page
  params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
end

def sort_column
  columns = %w[id database table created_by name]
  columns[params[:iSortCol_0].to_i]
end

def sort_direction
  params[:sSortDir_0] == "desc" ? "desc" : "asc"
end

end

この「読み取り用に開かれていません」というエラーの意味と、意図したとおりにjsonを出力するようにコードを修正する方法について、誰かが光を当てることができますか?

4

1 に答える 1

0

問題を修正しました。実行中のコードのバージョンは、保存エラーのために投稿したコードではありませんでした。

于 2013-10-09T17:40:05.780 に答える