私はこのレイルキャストをここで見ました
そのエピソードでは、Ryan ベイツがデータ値を示しています。JSONデータをブラウザに送信するための別のクラスを作成します。私も同じことをしました。ただし、すべての要素を取得する代わりに、テーブルにもチェック ボックスを追加したいと考えています。私は同じことをするために多くの異なる方法を試しました。ただし、チェック ボックスはデータ テーブル列には表示されません。表示されるのは、チェックボックスに対応する「true」または「false」の値だけです。
この質問を datatables フォーラムに投稿しましたが、非常に役立つ回答がありませんでした。
サーバー側のクラスのコードは次のとおりです。
class ListingsDatatable
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: Listing.count,
iTotalDisplayRecords: listings.total_entries,
aaData: data
}
end
private
def data
listings.map do |listing|
[
h(listing.id),
link_to(listing.name, listing),
h(listing.telephone),
h(listing.fax),
#This is the code I tried but no checkboxes, instead
# if the following is included then no data shows in the table
#check_box_tag('checked?', listing.checked),
#check_box_tag('collected', listing.collected),
#check_box_tag('digitized', listing.digitized),
#check_box_tag('in db?', listing.in_database)
#if I include the following,
#these are boolean values stored in the listings table
#which generate "true" or "false" in the columns. This works to show the boolean values. Checkboxes dont.
h(listing.keep),
h(listing.checked),
h(listing.collected),
h(listing.digitized),
h(listing.in_database)
]
end
end
def listings
@listings ||= fetch_listings
end
.........
ここに index.html.erb ファイルがあります
<h3><%= link_to 'Click here to create a new Listing', new_listing_path %></h3>
<table id="listings" class="display" data-source="<%= listings_url(format: "json")%>">
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>telephone</th>
<th>Keep this listing?</th>
<th>Checked</th>
<th>Collected?</th>
<th>Digitized?</th>
<th>in DB?</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<br />
ここにJavascriptファイルのlistings.jsがあります
//#JQuery
//Initialize the datatable
$(document).ready(function()
{
var oTable = $('#listings').dataTable(
{
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"bSortClasses": false,
"sScrollX": "90%",
"bScrollCollapse": true,
"sDom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>',
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": $('#listings').data('source')
});
});
チェックボックスをそれらの列に表示する方法を理解するのを手伝ってくれませんか
どうもありがとう。