私のアプリでは、以下のコードを使用して展開/折りたたみ機能を提供しています。
私の.jsファイルの1つ:
$(document).ready(function(){
$('.row .bundle').on('click', function(e) {
e.preventDefault();
var $this = $(this);
var $collapse = $this.closest('.collapse-group').find('.collapse');
$collapse.collapse('toggle');
});
});
ビューでは、拡張したいものをすべて囲んでいます。
<div class="row" style="text-align:center">
<div class="collapse-group">
<h4 class="normal_links">
<a class="bundle" href='#'>(Expand)</a>
</h4><br>
<div class="collapse normal_links" >
# Code to expand/collapse here
</div>
</div>
</div>
morris.jsライブラリを使用していくつかのグラフをアプリに導入し始めるまでは、魅力のように機能しました。その時点で、展開/折りたたみ(したがって、EC)機能は、グラフが表示されているページ以外のすべてのページで機能しなくなりました。ECが機能しないと言うときは、展開リンクをクリックすると、「#」の後に続くことを意味します。
チャートが属するモデルのanimal.js.coffeeファイルにある私のmorris.jsコード:
jQuery ->
Morris.Donut
element: 'weight_chart'
data: [
{label: "Pounds Sold", value: $('#weight_chart').data('sold')}
{label: "Pounds Left", value: $('#weight_chart').data('left')}
]
colors: ['#0066CC', "#880000"]
Morris.Donut
element: 'sales_chart'
data: [
{label: "Revenue Made", value: $('#sales_chart').data('sold')}
{label: "Est. Revenue Left", value: $('#sales_chart').data('left')}
]
colors: ["#336633", "#880000"]
Morris.Donut
element: 'status_chart'
data: [
{label: "Incomplete", value: $('#status_chart').data('zero')}
{label: "Downpaid", value: $('#status_chart').data('one')}
{label: "Fully Paid", value: $('#status_chart').data('two')}
{label: "Received", value: $('#status_chart').data('three')}
]
colors: ["#880000", '#E09050', '#989898', '#000000' ]
ビューで実際にチャートを呼び出す方法の例:
<%= content_tag :div, "", id: "sales_chart",
data: {sold: @animal.rev.round(2),
left: @animal.rev_left.round(2)},
class: "morris_chart" %>
チャートのあるページのECと同様に、チャートは完全に表示されます。一見他のすべてのページではなく。そして、morrisコードを含むanimal.js.coffeeファイルを(一時的に)削除すると、問題は解決します。ビューコードをトリプルチェックしましたが、すべて良好です(または少なくとも機能しているコードと同じです)。
おそらくさらに興味深いのは、これが機能したとき、以前は空のanimal.jsファイルがあり、それをmorris関連のコードを持つanimal.js.coffeeファイルに置き換えたことです。実際のmorris.jsおよびraphael.jsコードは、vendors/javascriptsにあります。EC javascriptコードは別のモデルの.jsファイルに完全に含まれていますが、これまでは問題になりませんでした。
何か案は?私は数時間コンピューターから離れますが、戻ってきたら、誰かが望む追加のコードを投稿します。
編集-私のapplication.jsファイルも関連している可能性があると考えました:
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require raphael
//= require morris
//= require_tree .