2012-01-25 11 views
0

AJAX経由で更新しながら、jQueryのUIのスライダーを使用したとき、私は以下のエラーを取得しています:Rails3 AJAXエラー - Fixnumかのための未定義のメソッド `MODEL_NAME」:クラス

ActionView::Template::Error (undefined method `model_name' for Fixnum:Class): 
1: $("#x_stock_list").html("<%= escape_javascript(render(@date_range)) %>"); 
app/views/home/index.js.erb:1:in`_app_views_home_index_js_erb__1074827181885368454_2504361900' 

を私のjqueryのスライダー機能は次のようになります。

def index 
    unless params[:weeks] 
     @date_range = 4 
    else 
     @date_range = Home.filter(params[:weeks]) 
    end 
    end 

そして、私のモデルでは:私のホームコントローラで

<script type="text/javascript"> 
$(function() { 
    $("#x_slider").slider({ 
    range: true, 
    step: 1, 
    min: 1, 
    max: 52, 
    values: [1, 52 ], 
    stop: function(event, ui) { 
     var url_param = $('#x_slider').slider('option', 'values'); 
     $('#x_low_selected').html(ui.value);  
     $.ajax({ 
     type: "GET", 
     data: ({ weeks: url_param[0] }), 
     url: $(this).attr('data-href'), 
     dataType: 'script' 
     }); 
    } 
    }); 
}); 
</script> 

、私はこれを持っている

def self.filter(weeks) 
    timeago = weeks.to_i 
    end 

最後に、私のindex.jsで

$("#x_stock_list").html("<%= escape_javascript(render(@date_range)) %>"); 

私は、スライダーをドラッグすると、値が細かい表示されます。

Parameters: {"weeks"=>"8", "_"=>"1327514933685"} 

それはエラーをスローしますが。

手動でURLをナビゲートすると、すべてhttp://localhost:3000/?weeks=9が正常に動作します。

ここで間違っていることを誰かが説明できますか?

答えて

4

renderメソッドはここでは必要ありませんが、目的は部分、ファイルまたはテキストをレンダリングすることです。あなたは番号4を渡しています。

escape_javascriptには、gsubに応答するクラスを想定しているので、どちらの番号も必要ありません。

#From the above link:  
result = javascript.gsub(%r(\\|<\/|\r\n|\3342\2200\2250|[\n\r"'])/) {|match| JS_ESCAPE_MAP[match] } 
javascript.html_safe? ? result.html_safe : result 

のいずれかを使用:

$("#x_stock_list").html("<%= @date_range %>"); 

または文字列に変換します

$.getJSON('traffic_sources.json', null, function(data) { 
    pie_chart("traffic_sources_graph", data.traffic_sources); 
}); 

function pie_chart(div, data) 
{ 
    new Highcharts.Chart({ 
     chart: { 
     renderTo: div, 
     backgroundColor: '#dddddd' 
     }, 
     series: [{ 
     type: 'pie', 
     name: 'Browser share', 
     data: data 
     }] 
    }); 
} 
:過去のhighchartsについては

$("#x_stock_list").html("<%= @date_range.to_s %>"); 

、私はの線に沿って何かを行っています

+0

これは意味があります - 変更されましたが、現在は "ActionView :: T emplate :: Error(未定義のメソッド 'gsub 'for 11:Fixnum):"?奇妙な – simonmorley

+1

ええ、あなたはescape_javascriptのどちらかは必要ありません。 – Gazler

+0

OK、to_iを削除して修正しましたが、私のビューも更新する必要があります。変更を反映するためにリロードする必要があるjsグラフがあります。 S – simonmorley

関連する問題